matplotlib 饼图数学文本标签/自动检查

2ic8powd  于 2023-06-06  发布在  其他
关注(0)|答案(1)|浏览(369)

因此,我一直在使用pyplot pie()函数,它工作得很好,除了当我试图在wedge标签中使用mathtext时(如在autopct标签中,我需要数字,\pm(+-)符号和一些相关数字)。有没有可能简单地做到这一点?我是否必须拉出所有的楔形对象并操作它们的文本(可能本身就是一系列的文本对象),或者有一些更简单的方法?我不介意复杂一些,我只是真的很想能够做到这一点。
edit:一个例子是matplotlib代码库中的第一个饼图例子:

import matplotlib.pyplot as plt

# The slices will be ordered and plotted counter-clockwise.
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10]
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']
explode = (0, 0.1, 0, 0) # only "explode" the 2nd slice (i.e. 'Hogs')

plt.pie(sizes, explode=explode, labels=labels, colors=colors,
        autopct='%1.1f%%', shadow=True, startangle=90)
# Set aspect ratio to be equal so that pie is drawn as a circle.
plt.axis('equal')

plt.show()

我们的想法是让autopct format关键字生成的数字以+-和一些数字结尾。

wr98u20j

wr98u20j1#

我不确定您的问题是在mathtext还是创建自定义标签。此外,你没有说你在哪里得到你想要放在±符号后面的值。
在这里,我假设您有一个列表,其中包含您想要为每个楔形添加的值。

# The slices will be ordered and plotted counter-clockwise.
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10]
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']
explode = (0, 0.1, 0, 0) # only "explode" the 2nd slice (i.e. 'Hogs')

patches, texts, autotexts = plt.pie(sizes, explode=explode, labels=labels, colors=colors,
        autopct='%1.1f%%', shadow=True, startangle=90)
# Set aspect ratio to be equal so that pie is drawn as a circle.
plt.axis('equal')

otherInfo = [3, 5, 3, 4]

for text, info in zip(autotexts, otherInfo):
    text.set_text(u"%s ± %.1f" % (text.get_text(), info)) #you can play here with the format to get the label that you want

相关问题