Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在饼图中旋转百分比标签以匹配类别标签旋转?_Python_Pandas_Matplotlib_Pie Chart - Fatal编程技术网

Python 如何在饼图中旋转百分比标签以匹配类别标签旋转?

Python 如何在饼图中旋转百分比标签以匹配类别标签旋转?,python,pandas,matplotlib,pie-chart,Python,Pandas,Matplotlib,Pie Chart,我正在进行一个个人预算可视化项目,以建立我的python能力,但在如何使用饼图显示数据方面遇到了一个障碍。现在,我有一个饼图,上面有每个类别的支出和每个类别的预算支出,饼图外有类别标签。使用plt.pie中的“rotatelabels=True”旋转标签,使其与从饼图中心到楔块中心的光线对齐。这非常有效,但我希望显示在楔体内部的百分比标签也可以旋转,以便类别标签和百分比都与前面提到的光线平行。我已经能够将所有百分比按给定的数量进行轮换,如本文所示: ,但我想根据我的目标改进它。关于如何使用tex

我正在进行一个个人预算可视化项目,以建立我的python能力,但在如何使用饼图显示数据方面遇到了一个障碍。现在,我有一个饼图,上面有每个类别的支出和每个类别的预算支出,饼图外有类别标签。使用plt.pie中的“rotatelabels=True”旋转标签,使其与从饼图中心到楔块中心的光线对齐。这非常有效,但我希望显示在楔体内部的百分比标签也可以旋转,以便类别标签和百分比都与前面提到的光线平行。我已经能够将所有百分比按给定的数量进行轮换,如本文所示: ,但我想根据我的目标改进它。关于如何使用text.set_旋转或其他函数或参数来实现这一点,有什么提示吗

修改代码段,使其在整个项目中起独立作用:

import pandas as pd
cat = ['Utilities', 'Home', 'Bike', 'Medical', 'Personal', 'Food', 'Groceries', 'Student Loans', 'Transit', 'Rent']
dict = {8:54.99,14:59.91,3:69.03,10:79.00,9:119.40,1:193.65,0:205.22,4:350.00,7:396.51,2:500.00}
nonzero_spending = pd.DataFrame(list(dict.items()), columns = ['index_col', 'Sum'])
plt.pie(nonzero_spending['Sum'],labels=cat,radius = 2,startangle = 160,autopct=lambda p : '{:.2f}%  ({:,.0f})'.format(p,p * sum(nonzero_spending['Sum'])/100), rotatelabels = True, pctdistance=0.8)
plt.title('Spending')
plt.axis('equal')
plt.show()

您可以提取外部标签的旋转并将其应用于百分比文本:

导入matplotlib.pyplot作为plt
作为pd进口熊猫
cat=[“公用事业”、“住宅”、“自行车”、“医疗”、“个人”、“食品”、“杂货”、“学生贷款”、“交通”、“租金”]
dict={8:54.99,14:59.91,3:69.03,10:79.00,9:119.40,1:193.65,0:205.22,4:350.00,7:396.51,2:500.00}
非零支出=pd.DataFrame(列表(dict.items()),列=['index\u col','Sum'])
补丁、标签、pct_文本=plt.pie(非零支出['Sum'],标签=cat,半径=2,startangle=160,
autopct=lambda p:f“{p:.2f}%({p*sum(非零支出['sum'])/100:,.0f})”,
旋转标号=真,pctdistance=0.5)
对于标签,zip中的pct_文本(标签,pct_文本):
pct\u text.set\u rotation(label.get\u rotation())
项目名称(“支出”)
plt.轴(“相等”)
plt.紧_布局()
plt.show()

返回3个列表(如果没有百分比文本,则返回2个):

  • (圆形三角形)的列表
  • 文本标签的列表,如matplotlib对象
  • (可选)百分比文本列表(也是
    Text
    对象)
对于标签,zip中的pct\u文本(标签,pct\u文本):
是Python实现同步的方法


pct\u text.set\u rotation(label.get\u rotation())
获取每个标签
text
对象的旋转,并将此值设置为相应百分比文本对象的旋转。

谢谢!补丁、标签、pct_文本元组用于什么?我对第7-11行的语法是如何工作的有点迷茫(正如你可能期望我自学的那样)。元组元素在饼图定义中映射到什么,zip()扮演什么角色?