python matplotlib笔记:饼状图

1、饼状图参数:

matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, 
autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, 
startangle=0, radius=1, counterclock=True, wedgeprops=None, 
textprops=None, center=(0, 0), frame=False, rotatelabels=False, *,
normalize=True, data=None)

explode:设置各部分突出
label:list类型,设置标签数据
colors:array-like,各个饼块的颜色
autopct:设置圆里面文本,一般是百分比格式:fmt % pct
labeldistance:设置标签文本距圆心位置,1.1表示1.1倍半径
shadow:设置是否有阴影
startangle:起始角度,默认从0开始逆时针转
pctdistance:设置圆内文本距圆心距离

2、样例:

# 导入包
import matplotlib.pyplot as plt
import pandas as pd
from datetime import datetime
import tushare as ts  
# 导入数据
ts.set_token("****************************")  
pro = ts.pro_api()
#查询当前所有正常上市交易的股票列表
data = pro.stock_basic(exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')
data

python matplotlib笔记:饼状图_第1张图片

# 修改字体(默认字体可能会存在无法显示的情况)
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
# 按照公司所在地区分类
cate_df = data.groupby("area").count()
categories = cate_df.index
count_num = cate_df.name
plt.figure(figsize=(12, 10), dpi=120)
plt.pie(count_num, labels=categories, autopct="%1.2f%%",
        textprops={'fontsize': 24}, labeldistance=1.25)
plt.title("各省市上市公司数量占比", fontsize=24)
# 保存图片
plt.savefig("./image/饼状图-各省市上市公司数量占比01.png")
plt.show()

python matplotlib笔记:饼状图_第2张图片
可以看到很多数据存在重叠的现象,可以通过调整字体大小和文字离圆心的距离来对图片进行优化;

# 修改字体
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
# 按照公司所在地区分类
cate_df = data.groupby("area").count()
# 按照百分比把饼凸显出来
cate_df["precents"] = cate_df["name"]* 2.5 / cate_df["name"].sum()
cate_df = cate_df.reset_index()
categories = cate_df.area
count_num = cate_df.name
explode = cate_df.precents
plt.figure(figsize=(10, 10), dpi=100)
plt.pie(count_num,explode, labels=categories, autopct="%1.1f%%",
        textprops={'fontsize': 16}, labeldistance=1.1,pctdistance=0.9,
        # 偏移角度防止把标题上的字挡住
        startangle=230)
# plt.legend(fontsize=16)
plt.title("各省市上市公司数量占比", fontsize=26)
# 保存图形
plt.savefig("./image/饼状图-各省市上市公司数量占比02.png")
plt.show()

python matplotlib笔记:饼状图_第3张图片
嗯,看起来更丑了,更像新冠病毒了。

所以对于画饼状图,建议是:
1、类别最好别超过10个(自定义),超过的话可以尝试把小类合并为其他类;
2、需要根据数据调整字的位置和图片突出部分,如果不是自动生成文档或者流程化生成图片,单张图片用Excel可能更加灵活;

你可能感兴趣的:(python,matplotlib,数据分析,数据挖掘)