python - 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()
这是我看到的 - 没有标签:
试图使用元组而不是列表 - 同样的事情。
有人可以帮助我吗?
解决方案
您可能希望在白色背景上将标签的颜色设为非白色 :)
同样使用 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()
推荐阅读
- pandas - 使用熊猫打开 CSV 文件时出现内存错误
- python-3.x - 奇怪的 Python 子进程引用行为
- javascript - django ajax POST 404 未找到
- python-3.x - 如何使用python从文本文件中获取一行行
- javascript - 如何使文本悬停在数据点上?
- arrays - 汇编语言子 for 循环
- python - 尽管我的逻辑是正确的,但我的 Python 代码并不能满足所有测试用例
- java - Spring Boot 无法连接到 elasticsearch docker
- asp.net-core - 使用 ICollection 应用对象
类型 - node.js - NodeJS - Visual Studio 2019-app.js 以代码 -1 退出