将y轴格式化为百分比

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


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

y轴的格式为float,我想将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()


largeQ
浏览 938回答 3
3回答

开心每一天1111

这已经晚了几个月,但是我用matplotlib 创建了PR#6251来添加一个新PercentFormatter类。使用此类,您只需要一行就可以重新格式化轴(如果算上的导入,则需要两行matplotlib.ticker):import ...import matplotlib.ticker as mtickax = 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中引入。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python