在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·
一个只分享干货的
生信公众号