一尘不染

Pyplot:在x轴上使用百分比

python

我有一个基于简单数字列表的折线图。默认情况下,x 轴只是绘制的每个值的增量 1。我想成为一个百分比,但不知道怎么做。因此,x 轴不是从 0 到 5,而是从 0% 到 100%(但保持合理间隔的刻度线。代码如下。谢谢!

from matplotlib import pyplot as plt
from mpl_toolkits.axes_grid.axislines import Subplot

data=[8,12,15,17,18,18.5]
fig=plt.figure(1,(7,4))
ax=Subplot(fig,111)
fig.add_subplot(ax)
plt.plot(data)

阅读 119

收藏
2022-07-13

共1个答案

一尘不染

这已经晚了几个月,但我用 matplotlib 创建了PR#6251来添加一个新PercentFormatter类。使用此类,您可以执行以下操作来设置轴:

import matplotlib.ticker as mtick

# Actual plotting code omitted

ax.xaxis.set_major_formatter(mtick.PercentFormatter(5.0))

这将以 0% 到 100% 的比例显示从 0 到 5 的值。格式化程序在概念上与@Ffisegydd 建议的做法相似,只是它可以考虑任意现有的刻度。

PercentFormatter()接受三个参数,max,decimalssymbol. max允许您设置对应于轴上 100% 的值(在您的示例中为5)。

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

请注意,如果您刚刚绘制数据,此格式化程序将使用通常会生成的任何刻度。除了输出到刻度线的字符串之外,它不会修改任何内容。

更新

PercentFormatter在 2.1.0 版中被 Matplotlib 接受。

2022-07-13