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

如何将图例添加到matplotlib饼图?,matplotlib,legend,pie-chart,Matplotlib,Legend,Pie Chart,使用这个例子 如何将图例添加到此饼图中? 我的问题是,我有一个大切片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. l

使用这个例子 如何将图例添加到此饼图中? 我的问题是,我有一个大切片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()

我检查了你的代码,
plt.legend()
创建了一个图例,就像你想要的那样;可以设置
loc=“lower left”
,这样它就不会与饼图的相关部分重叠

对我来说,除了非标准字符之外,字符串也能正确显示,这可能会导致根本不向您显示字符串的问题。只有最大的切片和“Otros”不含特殊字符。也可以尝试调整图形的大小,因为它们可能会被推出画布。请参阅,然后使用正确的字符串重试

未显示百分比,因为您未将其设置为显示。请参考您发布的示例,因为您省略了将绘制百分比的
autoct='%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()

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

best
upper right
upper left
lower left
lower right
right
center left
center right
lower center
upper center
center

state = stateData['State/UnionTerritory']
cases = stateData['ConfirmedIndianNational']
explode = stateData.ConfirmedIndianNational.apply(lambda x:x > 100)
explode = explode.apply(lambda x:0.2 if x == True else 0)
plt.title("Covid 19")
plt.pie(cases, explode=explode,autopct='%1.2f%%',shadow=True, radius=3)
plt.legend(state, loc="center")
plt.show()

我不知道
plt.pie
api是否已更改,但我需要执行
补丁、文本、u=plt.pie(大小、颜色=颜色、startangle=90)
(需要预期第三次返回值)