如何使用Matplotlib在Y轴上更改刻度距离?

时间:2020-07-26 16:06:30

标签: python matplotlib

我正在尝试将Y轴的比例从1更改为数百万,例如(0,1000,2000,3000,...)转换为(0,1,2,3,...) 。我寻找了许多matplotlib函数,但没有找到答案。我该怎么办?

谢谢。

2 个答案:

答案 0 :(得分:1)

如果您不想创建新数据,最简单的方法是修改y-ticks。示例:

原文:

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

t = np.arange(0.0, 2.0, 0.01)
s = 1e6 *  np.sin(2 * np.pi * t)

fig, ax = plt.subplots()
ax.plot(t, s)

plt.show()

enter image description here

并修改了y-ticks:

t = np.arange(0.0, 2.0, 0.01)
s = 1e6 *  np.sin(2 * np.pi * t)

fig, ax = plt.subplots()
ax.plot(t, s)

ax.set_yticklabels([y/1e6 for y in ax.get_yticks()])  # divide every tick value by 1 million

plt.show()

enter image description here 您还可以通过使用plt.xscaleplt.yscale参数以及自定义matplotlib.scale.register_scale来指定x轴或y轴比例。

答案 1 :(得分:1)

您可以简单地缩放数据本身并相应地标记轴:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

x_data = [1, 2, 3, 4, 5]
y_data = [1e6, 2e6, 4e6, 8e6, 16e6]

scale_factor = 1e6
y_data_scaled = [y / scale_factor for y in y_data]

ax.plot(x_data, y_data_scaled)
ax.set_ylabel('My Data (Millions)')

Expected output plot