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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值