小编典典

将 y 轴格式化为百分比

all

我有一个用熊猫创建的现有情节,如下所示:

df['myvar'].plot(kind='bar')

y 轴的格式为浮点数,我想将 y 轴更改为百分比。我发现的所有解决方案都使用 ax.xyz 语法, 我只能将代码放在上面创建绘图的行下方 (我不能将
ax=ax 添加到上面的行中。)

如何在不更改上面行的情况下将 y 轴格式化为百分比?

这是我找到的解决方案, 但需要我重新定义情节

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.ticker as mtick

data = [8,12,15,17,18,18.5]
perc = np.linspace(0,100,len(data))

fig = plt.figure(1, (7,4))
ax = fig.add_subplot(1,1,1)

ax.plot(perc, data)

fmt = '%.0f%%' # Format you want the ticks, e.g. '40%'
xticks = mtick.FormatStrFormatter(fmt)
ax.xaxis.set_major_formatter(xticks)

plt.show()

链接到上述解决方案:Pyplot:在 x
轴上使用百分比


阅读 76

收藏
2022-07-13

共1个答案

小编典典

这已经晚了几个月,但我用 matplotlib
创建了PR#6251来添加一个新PercentFormatter类。使用这个类,您只需要一行来重新格式化您的轴(如果您计算
的导入,则需要两条matplotlib.ticker):

import ...
import matplotlib.ticker as mtick

ax = df['myvar'].plot(kind='bar')
ax.yaxis.set_major_formatter(mtick.PercentFormatter())

PercentFormatter()接受三个参数,xmax, decimals, symbol. xmax允许您设置对应于轴上 100%
的值。如果您有从 0.0 到 1.0 的数据并且您希望将其从 0% 显示到 100%,这很好。做吧PercentFormatter(1.0)

其他两个参数允许您设置小数点和符号后的位数。它们分别默认为None'%'decimals=None将根据您显示的轴数自动设置小数点数。

更新

PercentFormatter
2.1.0 版中被引入 Matplotlib。

2022-07-13