我有一个用熊猫创建的现有情节,如下所示:
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 轴上使用百分比
这已经晚了几个月,但我用 matplotlib 创建了PR#6251来添加一个新PercentFormatter类。使用这个类,您只需要一行来重新格式化您的轴(如果您计算 的导入,则需要两条matplotlib.ticker):
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)。
PercentFormatter()
xmax
decimals
symbol
PercentFormatter(1.0)
其他两个参数允许您设置小数点和符号后的位数。它们分别默认为None和'%'。decimals=None将根据您显示的轴数自动设置小数点数。
None
'%'
decimals=None
更新
PercentFormatter在 2.1.0 版中被引入 Matplotlib。