三级饼图matplotlib-如何“美化”

时间:2019-12-19 18:47:40

标签: python matplotlib pie-chart donut-chart

我正在尝试在matplotlib中模拟一个三级饼图,但对它的美观性不满意。

enter image description here

具体地说,我似乎无法使这三个级别(或甜甜圈)更具特色。另外,我想将标签理想地显示为图例,而不是当前显示的样子。最后,如果可能的话,我希望能补充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()

有人可以建议如何“美化”饼图吗?

1 个答案:

答案 0 :(得分:2)

来自documentation of plt.piethis page

long-text

您可以通过向饼图添加名为text-long的字典来自定义楔形。例如:

(?<!-)text(?!-)

enter image description here

如果您只想在图例中而不是在图上显示标签:

[...]
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.
[...]

enter image description here