Python PieChart(是否可以做标注) [英] Python PieChart (is it possible to do CallOut labels)

查看:376
本文介绍了Python PieChart(是否可以做标注)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否有使用Python,Matplotlib等制作标注标签的示例

Is there any examples of doing CallOut Labels with Python, Matplotlib etc


图片来源

像上面这样的东西,带有一条线,并且标签从饼形图的外部指向..无法看到使用Mathplotlib完成的任何可能的示例....这可以通过Python完成吗?

Something like above with a line and the label pointing from outside the pie chart.. cannot see any possible examples of it being done with Mathplotlib.... can this be done with Python??

推荐答案

您可以使用matplotlib 注释 创建文本标签和注释行.

You may use matplotlib annotations to create text labels and annotation lines.

在这里是一个示例,其中将标签手动定位在数据"坐标中,即饼图的中心是(0,0)坐标.

Here is an example, where the labels are positionned manually in Data coordinates, i.e. the center of the pie is (0,0) coordinate.

import matplotlib.pyplot as plt 

fig, ax= plt.subplots(figsize=(4,4))
plt.subplots_adjust(bottom=0.3)
total = [13,87]
plt.title('How to spot intellectuals on TV')
plt.gca().axis("equal")
pie = plt.pie(total, startangle=93)
labels = ["1. They say sophisticated things", "2. They sit in front of a bookshelf"]

bbox_props = dict(boxstyle="square,pad=0.3", fc="w", ec="k", lw=0.72)
arrowprops=dict(arrowstyle="-",connectionstyle="angle,angleA=0,angleB=90")
kw = dict(xycoords='data',textcoords='data',
          arrowprops=arrowprops, bbox=bbox_props, zorder=0)
plt.gca().annotate("2", xy=(0, 0), xytext=( 1.1, -0.8), **kw )
plt.gca().annotate("1", xy=(0, 0), xytext=(-1.1,  0.8), **kw )

plt.legend(pie[0],labels, loc="center", bbox_to_anchor=(0.5,-0.1))
plt.show()

我们可以使用楔形的角度在合适的位置自动创建标签.

We can use the angles of the wedges to automatically create labels at the positions, which are suitable.

import matplotlib.pyplot as plt
import numpy as np 

fig, ax= plt.subplots(figsize=(4,4))
plt.subplots_adjust(bottom=0.3)
total = [12,15,12,13,16]
plt.title('My repair strategies')
plt.gca().axis("equal")
patches, texts = pie = plt.pie(total, startangle=5)
labels = ["1. roaring at it", 
          "2. hitting it",
          "3. using superglue",
          "4. using duct tape",
          "5. dismantling it, then ditch it"]

bbox_props = dict(boxstyle="square,pad=0.3", fc="w", ec="k", lw=0.72)
arrowprops=dict(arrowstyle="-",connectionstyle="angle,angleA=0,angleB=90")
kw = dict(xycoords='data',textcoords='data',arrowprops=arrowprops, 
          bbox=bbox_props, zorder=0, va="center")

for i, p in enumerate(patches):
    ang = (p.theta2 - p.theta1)/2.+p.theta1
    y = np.sin(ang/180.*np.pi)
    x = 1.35*np.sign(np.cos(ang/180.*np.pi))
    plt.gca().annotate(str(1+i), xy=(0, 0), xytext=( x, y), **kw )

plt.legend(pie[0],labels, loc="center", bbox_to_anchor=(0.5,-0.2))
plt.show()

这篇关于Python PieChart(是否可以做标注)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆