如何将图例添加到matplotlib饼图?

问题描述 投票:9回答:2

使用此示例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()
matplotlib legend pie-chart
2个回答
18
投票

我检查了您的代码,然后plt.legend()创建了一个图例,就像您希望的那样;可能会设置loc="lower left",因此它不会与相关的饼图重叠。

对我来说,除了非标准字符外,字符串还可以正确显示-这可能会导致根本不显示字符串的问题。只有最大的片段和“ Otros”不包含特殊字符。也许还要尝试调整图形的大小,因为它们可能会从画布中推出。请参考how to write accents with 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()

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9ITnJHeC5wbmcifQ==” alt =“结果饼图”>“ >>


0
投票

您可以更改以下图例的类型-

© www.soinside.com 2019 - 2024. All rights reserved.