我有一个现有的用熊猫创建的图,像这样:
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的话,需要两行):
import ...
import matplotlib.ticker as mtick
ax = df['myvar'].plot(kind='bar')
ax.yaxis.set_major_formatter(mtick.PercentFormatter())
PercentFormatter()接受三个参数,xmax,小数,符号。Xmax允许您设置轴上对应于100%的值。如果您有从0.0到1.0的数据,并且您想要显示从0%到100%的数据,这是很好的方法。只需使用PercentFormatter(1.0)。
另外两个参数允许您设置小数点和符号之后的位数。它们分别默认为None和'%'。decimals=None将根据您所显示的轴的大小自动设置小数点的数目。
更新
在2.1.0版中,Matplotlib正式引入了PercentFormatter。
这迟了几个月,但我已经用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,小数,符号。Xmax允许您设置轴上对应于100%的值。如果您有从0.0到1.0的数据,并且您想要显示从0%到100%的数据,这是很好的方法。只需使用PercentFormatter(1.0)。
另外两个参数允许您设置小数点和符号之后的位数。它们分别默认为None和'%'。decimals=None将根据您所显示的轴的大小自动设置小数点的数目。
更新
在2.1.0版中,Matplotlib正式引入了PercentFormatter。