如何在matplotlib饼图中添加图例?

mur*_*nox 8 matplotlib legend pie-chart

使用此示例http://matplotlib.org/examples/pie_and_polar_charts/pie_demo_features.html 如何在此饼图中添加图例?我的问题是我有一个大切片88.4%,第二大切片是10.6%,其他切片是0.7和0.3%.饼图周围的标签不会出现(最大切片除外),也不会显示较小切片的百分比值.所以我想我可以添加一个显示名称和值的图例.但我还没有发现......

# -*- coding: UTF-8 -*-
import matplotlib.pyplot as plt
# The slices will be ordered and plotted counter-clockwise.
labels = 'Rayos X', 'RMN en solución', 'Microscopía electrónica', 'Otros'
sizes = [88.4, 10.6, 0.7, 0.3]
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']
explode = (0.1, 0, 0, 0)
plt.pie(sizes, explode=explode, labels=labels, colors=colors, shadow=True, startangle=90)
plt.legend(title="técnica")
# Set aspect ratio to be equal so that pie is drawn as a circle.
plt.axis('equal')
plt.show()
Run Code Online (Sandbox Code Playgroud)

Fau*_*ier 14

我检查了你的代码,并plt.legend()创建了一个传奇,就像你想要的那样; 也许设置loc="lower left",所以它不会与相关的馅饼重叠.

对我来说,除了非标准字符之外,字符串也会正确显示 - 这可能会导致它们根本不显示给您的问题.只有最大的切片和"Otros"不包含特殊的字符.也许还会尝试调整图形大小,因为它们可能会被推出画布.请参考如何使用matplotlib编写重音符,并使用正确的字符串试.

百分比未显示,因为您没有将它们设置为显示.请参阅您发布的示例,因为您省略autopct='%1.1f%%'了将绘制百分比的示例.在这种特殊情况下,我宁愿不绘制百分比,因为它们会像边框上的标签一样重叠,因为有些切片太小了.也许将这些信息添加到图例中.

把它们放在一起(除了特殊的字符 - 我在激活TeX时遇到了一些问题),请尝试以下代码:

# -*- coding: UTF-8 -*-
import matplotlib.pyplot as plt
# The slices will be ordered and plotted counter-clockwise.
labels = [r'Rayos X (88.4 %)', r'RMN en solucion (10.6 %)', 
r'Microscopia electronica (0.7 %)', r'Otros (0.3 %)']
sizes = [88.4, 10.6, 0.7, 0.3]
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']
patches, texts = plt.pie(sizes, colors=colors, startangle=90)
plt.legend(patches, labels, loc="best")
# Set aspect ratio to be equal so that pie is drawn as a circle.
plt.axis('equal')
plt.tight_layout()
plt.show()
Run Code Online (Sandbox Code Playgroud)

结果饼图

  • 我不知道`plt.pie` api是否已更改,但是我需要做`patches,texts,_ = plt.pie(sizes,colors = colors,startangle = 90)`(需要第三次返回val https://matplotlib.org/api/_as_gen/matplotlib.pyplot.pie.html) (3认同)