pandas & matplotlib 饼图,从入门到熟练 您所在的位置:网站首页 matplotlib饼状图函数 pandas & matplotlib 饼图,从入门到熟练

pandas & matplotlib 饼图,从入门到熟练

2024-07-01 14:41| 来源: 网络整理| 查看: 265

最简单的饼图:

#解决中文字题显示不正常的问题 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 实验室设备网 版权所有