matplotlib基础绘图命令之pie

时间:2022-07-22
本文章向大家介绍matplotlib基础绘图命令之pie,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

在matplotlib中,pie方法用于绘制饼图,基本用法如下

plt.pie(x=[1, 2, 3, 4])

输出的结果如下

这样的饼图并没有任何实用价值,为了有效的展示信息,至少我们还需要显示数据的标签和百分比的数值。此时就需要调整参数,pie方法常用的参数有以下几个

1. labels, 设置饼图中每部分的标签

2. autopct, 设置百分比信息的字符串格式化方式,默认值为None,不显示百分比

3. shadow, 设置饼图的阴影,使得看上去有立体感,默认值为False

4. startangle, 饼图中第一个部分的起始角度,

5. radius, 饼图的半径,数值越大,饼图越大

6. counterclock, 设置饼图的方向,默认为True,表示逆时针方向,值为False时为顺时针方向

7. colors,调色盘,默认值为None, 会使用默认的调色盘,所以通常情况下,不需要设置该参数

8. explode, 该参数用于突出显示饼图中的指定部分

下面来具体看下其中几个参数的用法

1. labels

labels指定每个部分的标签,用法如下

plt.pie(x=[1, 2, 3, 4], labels=['sampleA', 'sampleB', 'sampleC', 'sampleD'])

输出结果如下

2. autopct

autopct设置饼图上的标记信息,有两种设置方式,第一种,设置字符串格式化,用法如下

plt.pie(x=[1, 2, 3, 4], labels=['sampleA', 'sampleB', 'sampleC', 'sampleD'], autopct='%.1f%%')

输出结果如下

第二种,用函数来进行设置,用法如下

data=[1,2,3,4]
plt.pie(x=data, labels=['sampleA', 'sampleB', 'sampleC', 'sampleD'], autopct=lambda pct:'({:.1f}%)n{:d}'.format(pct, int(pct/100 * sum(data))))

输出结果如下

3. explode

explode用于突出线似乎饼图中的子集,用间隔突出的方式进行显示,用法如下

plt.pie(x=[1, 2, 3, 4], labels=['sampleA', 'sampleB', 'sampleC', 'sampleD'], autopct='%1.1f%%', explode = [0, 0, 0.05, 0])

输出结果如下

4. startangle

startangle指定起始角度,用法如下

plt.pie(x=[1, 2, 3, 4], labels=['sampleA', 'sampleB', 'sampleC', 'sampleD'], autopct='%1.1f%%',startangle=90)

输出结果如下

5. countercolock

countercolock用于调整饼图的方向,用法如下

plt.pie(x=[1, 2, 3, 4], labels=['sampleA', 'sampleB', 'sampleC', 'sampleD'], autopct='%1.1f%%',counterclock=False)

输出结果如下

6. radius

radius用于设置饼图的半径,半径越大,饼图越大,用法如下

plt.pie(x=[1, 2, 3, 4], labels=['sampleA', 'sampleB', 'sampleC', 'sampleD'], autopct='%1.1f%%',radius=1.5)

输出结果如下

对于饼图而言,有一个非常现实的问题,就是图例的设置,在单张图片中,饼图的内容总是汇合图例重叠,示意如下

为了将图例和内容有效的区分开来,可以通过设置legend方法的bbox_to_anchor参数,该参数用于设置图例区域在figure上的坐标,其值为4个元素的元组,分别表示x,y,width,height, 代码如下

data=[1,2,3,4]
labels=['sampleA', 'sampleB', 'sampleC', 'sampleD']
plt.pie(x=data, labels=labels, autopct=lambda pct:'({:.1f}%)n{:d}'.format(pct, int(pct/100 * sum(data))))
plt.legend(labels,loc="upper left",bbox_to_anchor=(1.2, 0, 0.5, 1))

x的值大于1,表示图例的位置位于axes右侧区域,x的值越大,图例和饼图之间的空隙越大,上述代码的输出效果如下

饼图作为常用图表之一,在展示百分比信息时,有不可替代的优势。matplotlib中的pie函数在传统饼图的基础上,添加了突出展示的功能,进一步加强了饼图的可视化效果。

·end·