【发布时间】:2019-12-27 11:59:23
【问题描述】:
我想为我的三层甜甜圈图中的每个标签和图层添加百分比值。
以下代码适当地生成三层圆环图和图例。但是,它会弄乱百分比值的显示(请参阅此问题底部的输出图)。
堆栈溢出或其他地方的当前解决方案仅适用于将百分比值添加到饼图/甜甜圈图(例如:How do I use matplotlib autopct? ),但我的饼图/甜甜圈图有三个层/级别。我的代码如下:
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
fig.set_figheight(7)
fig.set_figwidth(22)
ax1 = fig.add_subplot(121)
first_labels = ["Bonjovi", "Superman", "Darius_royale", "Stargazer_1991_viz", "Obligatory_Vis1", "Gertrude", 'Trimbel', "Olio", "Iniwaka"]
first_sizes = [2000, 300, 200, 100, 100, 150, 40, 30, 700]
second_sizes = [1000, 200, 200, 400, 500, 40, 1, 1, 1000]
third_sizes = [500, 300, 400, 500, 400, 100, 5, 2, 800]
flatui = (sns.diverging_palette(20, 250, n=8))
bigger = plt.pie(first_sizes, colors=flatui, startangle=90, frame=True, radius = 1,
wedgeprops={'edgecolor':'k'}, autopct = '%1.1%%f')
smaller = plt.pie(second_sizes, colors=flatui, radius=0.9, startangle=90,
wedgeprops={'edgecolor':'k'}, autopct = '%1.1%%f')
smallest = plt.pie(third_sizes, colors=flatui, radius=0.8, startangle=90,
wedgeprops={'edgecolor':'k'}, autopct = '%1.1%%f')
centre_circle = plt.Circle((0, 0), 0.7, color='white', linewidth=0)
plt.gca().add_artist(centre_circle)
# add legend to current ax:
plt.gca().legend(first_labels, loc='center right', bbox_to_anchor=(1,0,.4,1), frameon = True)
plt.show();
有人可以指导我如何让百分比值在每个甜甜圈环中整齐地显示吗?
【问题讨论】:
-
这能回答你的问题吗? How do I use matplotlib autopct?
-
不幸的是,建议的解决方案仅在饼图/甜甜圈图有一层/级别时才有效。我在上面的圆环图中有三个级别。因此,该链接无法回答我的问题。
-
此格式字符串
'%1.1%%f'似乎不正确。我猜应该是'%4.2f%%'(注意f的位置)。 -
如果您要解决的问题是百分位数的位置,那么您正在寻找
matplotlib.pie()的pctdistance参数。 -
我得到了很好的视觉效果,
pctdistances 对于每个饼图分别为 1、0.9 和 0.8。
标签: python matplotlib