pandas & matplotlib 饼图,从入门到熟练 | 您所在的位置:网站首页 › matplotlib饼状图函数 › pandas & matplotlib 饼图,从入门到熟练 |
最简单的饼图: #解决中文字题显示不正常的问题 from pylab import mpl mpl.rcParams['font.sans-serif']=['SimHei']数据集: 最简单的饼图: #导入第三方库 import pandas as pd import matplotlib.pyplot as plt #导入数据集 df_1 df_1 = pd.read_csv("数据集.csv") #将数据导入到饼图里面/pie():图标格式为饼图 df_1['数量'].plot.pie() #生成饼图 plt.show()饼图输出: 这个时候,想要的数据是按照我们所需要的要求输出了,但是美观度不够。 就比如说,最外面的那一圈数字; 并且它还有Y轴标签????? 这个时候如果我们在回过头看数据集,就会发现这个其实是数据所对应的索引数(这是因为我们还没有自定义index/标签), 我们这个时候可以在文件读取之后加上我们自定义的索引 自定义过标签的饼图: 文件读取后设置index 我选择用数据集标签那个字段的内容做索引内容 df_1.set_index('标签', inplace=True) #导入第三方库 import pandas as pd import matplotlib.pyplot as plt #导入数据集 df_1 df_1 = pd.read_csv("数据集.csv") #自定义索引 df_1.set_index('标签', inplace=True) #将数据导入到饼图里面/pie():图标格式为饼图 df_1['数量'].plot.pie() #生成饼图 plt.show()修改之后的输出: 这个时候的数据,是不是就比较符合我们的审美了,能知道谁是谁的谁了。问题解决了一个了 就是那个Y轴坐标,看着还是异常的别扭!!!!! 要想办法给他搞一下: ps:但是本人能力有限,实在是搞不掉,最后决定加入它,呵,给他整个空值,我不就看不见了,看不见不就是没了嘛??? 有X,Y轴的饼图: # 设置标题和y轴: plt.title('不同岗位数量在全国范围内所占的比例', fontsize=16, fontweight='bold') plt.ylabel('', fontsize=16, fontweight='bold') #导入第三方库 import pandas as pd import matplotlib.pyplot as plt #导入数据集 df_1 df_1 = pd.read_csv("数据集.csv") #自定义索引 df_1.set_index('标签', inplace=True) #将数据导入到饼图里面/pie():图标格式为饼图 df_1['数量'].plot.pie() #添加上标题和取消Y轴坐标 plt.title('不同岗位数量在全国范围内所占的比例', fontsize=16, fontweight='bold') plt.ylabel('', fontsize=16, fontweight='bold') #生成饼图 plt.show()输出图: 这个时候基本上是不是感觉好多了,但是!!你发现这个时候你不是很好区分自然语言和图像识别谁的多???? 排序后的饼图: 这个时候我们可以排序一波 # 按照升序排序 csv.a.sort_values().plot.pie() # 按照升序排序并按照顺时针排列 # counterclock:是否逆时针 csv.a.sort_values().plot.pie(counterclock=False) #导入第三方库 import pandas as pd import matplotlib.pyplot as plt #导入数据集 df_1 df_1 = pd.read_csv("数据集.csv") #自定义索引 df_1.set_index('标签', inplace=True) #将数据导入到饼图里面/pie():图标格式为饼图 #降序排列一波 df_1['数量'].sort_values().plot.pie(counterclock=False) #添加上标题和取消Y轴坐标 plt.title('不同岗位数量在全国范围内所占的比例', fontsize=16, fontweight='bold') plt.ylabel('', fontsize=16, fontweight='bold') #生成饼图 plt.show()输出图: 这个时候再看数据,发现这个图似乎不凌乱了,看着顺眼了,心情舒畅了。但是老板要是问你人工智能占比多少,你咋搞?计算机捅一捅??? 闹呢? 所以,你就要就上具体的比例数据了 带百分数的饼图: 这个时候就要在饼图内部进行设置了 #控制饼图的大小尺寸 figsize=(8, 8) #控制输出的数值: .2:保留两位小数,%%显示单位为百分数 autopct='%.2f%%' #降序排列:默认的数值是升序的 fontweight='bold'&&要和sort_values()一起使用 #导入第三方库 import pandas as pd import matplotlib.pyplot as plt #导入数据集 df_1 df_1 = pd.read_csv("数据集.csv") #解决中文字题显示不正常的问题 from pylab import mpl mpl.rcParams['font.sans-serif']=['SimHei'] #自定义索引 df_1.set_index('标签', inplace=True) #将数据导入到饼图里面/pie():图标格式为饼图 #降序排列一波 df_1['数量'].sort_values().plot.pie(figsize=(8, 8),autopct='%.2f%%',counterclock=False) #添加上标题和取消Y轴坐标 plt.title('不同岗位数量在全国范围内所占的比例', fontsize=16, fontweight='bold') plt.ylabel('', fontsize=16, fontweight='bold') #生成饼图 plt.show()输出图: 整理后的代码:(这个时候将pie内部的函数全部写进一个代码块中) #导入第三方库 import pandas as pd import matplotlib.pyplot as plt #导入数据集 df_1 df_1 = pd.read_csv("数据集.csv") #解决中文字题显示不正常的问题 from pylab import mpl mpl.rcParams['font.sans-serif']=['SimHei'] #重建索引数据 df_1.set_index('标签', inplace=True) #将需要用的数据导入饼图 # autopct='%.2f%%' 显示数据为百分比 # df_1['数量'].plot.pie(autopct='%.2f%%') df_1['数量'].sort_values().plot(kind = 'pie', # 选择图形类型 # pie 饼图 # bar 柱状图 figsize=(8, 8), # 控制饼图的整体尺寸大小 autopct='%.1f%%', # 饼图中添加数值标签 # .1 & f :.1是保留一位小数,f是浮点数值类型 radius = 1, # 设置饼图的半径 startangle = 180, # 设置饼图的初始角度 counterclock = True, # 将饼图的顺序设置为顺时针方向 # title = '失信用户的受教育水平分布', # 为饼图添加标题 wedgeprops = {'linewidth': 1.5, 'edgecolor':'green'}, # 设置饼图内外边界的属性值, #linewidth:控制的是边框的宽度 #edgecolor:控制边框颜色 textprops = {'fontsize':10, 'color':'black'} # 设置文本标签的属性值 # fontsize :控制文本的字体大小 # color :控制文本的字体颜色 ) #控制标题 plt.title('不同岗位数量在全国范围内所占的比例', fontsize=16, fontweight='bold') plt.ylabel('', fontsize=16, fontweight='bold') plt.show()带图例的饼图: 图例代码 在控制饼图属性代码的后面加上 plt.legend(loc=2, bbox_to_anchor=(1.05,1.0),borderaxespad = 0.) #导入第三方库 import pandas as pd import matplotlib.pyplot as plt #导入数据集 df_1 df_1 = pd.read_csv("数据集.csv") #解决中文字题显示不正常的问题 from pylab import mpl mpl.rcParams['font.sans-serif']=['SimHei'] #重建索引数据 df_1.set_index('标签', inplace=True) #将需要用的数据导入饼图 # autopct='%.2f%%' 显示数据为百分比 # df_1['数量'].plot.pie(autopct='%.2f%%') df_1['数量'].sort_values().plot(kind = 'pie', # 选择图形类型 # pie 饼图 # bar 柱状图 figsize=(8, 8), # 控制饼图的整体尺寸大小 autopct='%.1f%%', # 饼图中添加数值标签 # .1 & f :.1是保留一位小数,f是浮点数值类型 radius = 1, # 设置饼图的半径 startangle = 180, # 设置饼图的初始角度 counterclock = True, # 将饼图的顺序设置为顺时针方向 # title = '失信用户的受教育水平分布', # 为饼图添加标题 wedgeprops = {'linewidth': 1.5, 'edgecolor':'green'}, # 设置饼图内外边界的属性值, #linewidth:控制的是边框的宽度 #edgecolor:控制边框颜色 textprops = {'fontsize':10, 'color':'black'} # 设置文本标签的属性值 # fontsize :控制文本的字体大小 # color :控制文本的字体颜色 ) #添加图例:最右上角的那个东西; plt.legend(loc=2, bbox_to_anchor=(1.05,1.0),borderaxespad = 0.) #控制标题 plt.title('不同岗位数量在全国范围内所占的比例', fontsize=16, fontweight='bold') plt.ylabel('', fontsize=16, fontweight='bold') plt.show()输出图:(右上角的就是图例) 单图初级玩法,有兴趣的可以自己在开发点玩法,看了很多别的大佬的新奇玩法,感觉很有趣。限于种种原因,现在不多深入。 另外感谢,他这一版我的一些问题没有解决,在他这一版的基础上加以添加部分内容。 icestone_kai |
CopyRight 2018-2019 实验室设备网 版权所有 |