我正在尝试在matplotlib中模拟一个三级饼图,但对它的美观性不满意。
具体地说,我似乎无法使这三个级别(或甜甜圈)更具特色。另外,我想将标签理想地显示为图例,而不是当前显示的样子。最后,如果可能的话,我希望能补充8种颜色。
我的代码如下:
import matplotlib.pyplot as plt
import numpy as np
first_labels = ["B", "S", "D", "SG", "OBGL", "G", 'T', "O", "I"]
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, labels=first_labels, colors=flatui,
startangle=90, frame=True, radius = 1)
smaller = plt.pie(second_sizes,
colors=flatui, radius=0.9,
startangle=90, labeldistance=0.9)
smallest = plt.pie(third_sizes,
colors=flatui, radius=0.8,
startangle=90, labeldistance=0.8)
centre_circle = plt.Circle((0, 0), 0.7, color='white', linewidth=0)
fig = plt.gcf()
fig.gca().add_artist(centre_circle)
plt.axis('equal')
plt.tight_layout()
plt.show()
有人可以建议如何“美化”饼图吗?
答案 0 :(得分:2)
来自documentation of plt.pie和this page:
long-text
您可以通过向饼图添加名为text-long
的字典来自定义楔形。例如:
(?<!-)text(?!-)
如果您只想在图例中而不是在图上显示标签:
[...]
wedgeprops : dict, optional, default: None
Dict of arguments passed to the wedge objects making the pie. For example, you can pass in wedgeprops = {'linewidth': 3} to set the
width of the wedge border lines equal to 3. For more details, look at
the doc/arguments of the wedge object. By default clip_on=False.
[...]