Python matplotlib饼图中缺少标签
我尝试在Ubuntu18.10上使用Python3 Matplotlib v2.2.2-4build1绘制饼图。除了标签,一切似乎都很好——它们不见了。尝试根据官方文档添加它(),尝试使用web上的示例()-结果相同,没有标签 以下是我的代码的简化版本:Python matplotlib饼图中缺少标签,python,matplotlib,plot,Python,Matplotlib,Plot,我尝试在Ubuntu18.10上使用Python3 Matplotlib v2.2.2-4build1绘制饼图。除了标签,一切似乎都很好——它们不见了。尝试根据官方文档添加它(),尝试使用web上的示例()-结果相同,没有标签 以下是我的代码的简化版本: import numpy as np import matplotlib.pyplot as plt import sys headers = ['a', 'b', 'c', 'd', 'e'] values = [5, 4, 3, 2, 1
import numpy as np
import matplotlib.pyplot as plt
import sys
headers = ['a', 'b', 'c', 'd', 'e']
values = [5, 4, 3, 2, 1]
sum = sum(values)
labels = []
for v in values:
labels.append('{:.1f}%'.format(100 * v / sum))
fig, ax = plt.subplots(figsize=(6, 3), subplot_kw=dict(aspect="equal"))
wedges, texts = ax.pie(values, labels=labels, textprops=dict(color="w"))
plt.show()
以下是我看到的-无标签:
尝试使用元组而不是列表-同样的事情
有人能帮我吗?在plt.show()之前添加plt.legend()语句即可
import numpy as np
import matplotlib.pyplot as plt
import sys
headers = ['a', 'b', 'c', 'd', 'e']
values = [5, 4, 3, 2, 1]
labels = []
for v in values:
labels.append('{:.1f}%'.format(100 * v / sum))
fig, ax = plt.subplots(figsize=(6, 3), subplot_kw=dict(aspect="equal"))
wedges, texts = ax.pie(values, labels=labels, textprops=dict(color="w"))
plt.legend()
plt.show()
在plt.show()之前添加plt.legend()语句将完成此任务
import numpy as np
import matplotlib.pyplot as plt
import sys
headers = ['a', 'b', 'c', 'd', 'e']
values = [5, 4, 3, 2, 1]
labels = []
for v in values:
labels.append('{:.1f}%'.format(100 * v / sum))
fig, ax = plt.subplots(figsize=(6, 3), subplot_kw=dict(aspect="equal"))
wedges, texts = ax.pie(values, labels=labels, textprops=dict(color="w"))
plt.legend()
plt.show()
您可能希望在白色背景上使标签的颜色变为非白色:) 同时,使用sum作为变量名会覆盖函数,因此最好选择其他名称
import numpy as np
import matplotlib.pyplot as plt
import sys
headers = ['a', 'b', 'c', 'd', 'e']
values = [5, 4, 3, 2, 1]
sumT = sum(values)
labels = []
for v in values:
labels.append('{:.1f}%'.format(100 * v / sumT))
fig, ax = plt.subplots(figsize=(6, 3), subplot_kw=dict(aspect="equal"))
wedges, texts = ax.pie(values, labels=labels, textprops=dict(color="k"))
plt.show()
或者,如果希望标签位于内部:
import numpy as np
import matplotlib.pyplot as plt
import sys
def func(pct, allvals):
absolute = int(pct/100.*sum(allvals))
return "{:.1f}%)".format(pct)
headers = ['a', 'b', 'c', 'd', 'e']
values = [5, 4, 3, 2, 1]
sumT = sum(values)
labels = []
for v in values:
labels.append('{:.1f}%'.format(100 * v / sumT))
fig, ax = plt.subplots(figsize=(6, 3), subplot_kw=dict(aspect="equal"))
wedges, texts = ax.pie(values, autopct=lambda pct: func(pct,
values), textprops=dict(color="w"))
plt.show()
您可能希望在白色背景上使标签的颜色变为非白色:) 同时,使用sum作为变量名会覆盖函数,因此最好选择其他名称
import numpy as np
import matplotlib.pyplot as plt
import sys
headers = ['a', 'b', 'c', 'd', 'e']
values = [5, 4, 3, 2, 1]
sumT = sum(values)
labels = []
for v in values:
labels.append('{:.1f}%'.format(100 * v / sumT))
fig, ax = plt.subplots(figsize=(6, 3), subplot_kw=dict(aspect="equal"))
wedges, texts = ax.pie(values, labels=labels, textprops=dict(color="k"))
plt.show()
或者,如果希望标签位于内部:
import numpy as np
import matplotlib.pyplot as plt
import sys
def func(pct, allvals):
absolute = int(pct/100.*sum(allvals))
return "{:.1f}%)".format(pct)
headers = ['a', 'b', 'c', 'd', 'e']
values = [5, 4, 3, 2, 1]
sumT = sum(values)
labels = []
for v in values:
labels.append('{:.1f}%'.format(100 * v / sumT))
fig, ax = plt.subplots(figsize=(6, 3), subplot_kw=dict(aspect="equal"))
wedges, texts = ax.pie(values, autopct=lambda pct: func(pct,
values), textprops=dict(color="w"))
plt.show()
谢谢回复,但我不需要图例,我需要标签,这是另一回事。参见示例,没有图例,[“Java”、“Ruby”、“C++”、“Python”]是MatplotLib的标签。谢谢您的回复,但我不需要图例,我需要标签,这是另一回事。例如,这里没有图例,[“Java”、“Ruby”、“C++”、“Python”]是MatplotLib的标签该死,这么简单:)非常感谢。该死,这么简单:)非常感谢。