首页 > 解决方案 > matplotlib 饼图中缺少标签

问题描述

我尝试在 Ubuntu 18.10 上使用 Python 3 Matplotlib v2.2.2-4build1 绘制饼图。一切似乎都很好,除了标签——它们不见了。尝试根据官方文档添加(https://matplotlib.org/api/_as_gen/matplotlib.pyplot.pie.html),尝试使用网络上的示例(https://pythonspot.com/matplotlib-pie -chart/ ) - 结果相同,没有标签。

这是我的代码的简化版本:

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()

这是我看到的 - 没有标签:

没有标签的饼图

试图使用元组而不是列表 - 同样的事情。

有人可以帮助我吗?

标签: pythonmatplotlibplot

解决方案


您可能希望在白色背景上将标签的颜色设为非白色 :)

同样使用 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()

推荐阅读