如何将 x 轴移动一位以从 1 而不是 0 开始?

How do I shift the x-axis over by one to start at 1 instead of 0?

如何开始在 x 轴位置 1 而不是 0 处绘制我的值?我看到的所有解决方案都非常复杂,我想我一定是忽略了一种简单的方法来指定它。

import matplotlib.pyplot as plt

def plot_vals(vals, RANGE):
  plt.grid()
  plt.xticks(RANGE)
  plt.plot(vals, 'ro-')


RANGE = range(0, 11)

vals = [600.0, 222.3, 139.8, 114.0, 90.8, 80.8, 70.7, 62.8, 55.5, 47.5]
plot_vals(vals, RANGE)

生成此图

我想要的只是 x 到 运行 从 1 - 10(而不是 0 到 9),同时保留所有要绘制的值。

为确保这一点,您可以为 plt.plotx 参数传递一个 range,它从 1 到值的长度:

plt.plot(range(1, len(vals) + 1), vals)

这给出了这个:

为了以 1..10 的方式查看它们,我们使用具有相同范围的 plt.xticks

plt.xticks(range(1, len(vals) + 1))

得到

总体:

x_range = range(1, len(vals) + 1)
plt.plot(x_range, vals)
plt.xticks(x_range)

(OOP风格,最后两行的功能是ax.plotax.set_xticks

您可以执行 plt.plot(RANGE, vals, 'ro-'),其中第一个参数用于 x 轴,第二个参数用于 y 轴。但是 RANGEvals 的长度必须相同,所以你需要 RANGE = range(1, 11).

此代码只需进行很少的更改即可工作。唯一的两个区别是将 RANGE 调用到 plt.plot 并以不同方式定义 RANGE 以避免引发错误:

import matplotlib.pyplot as plt

def plot_vals(vals, RANGE):
  plt.grid()
  plt.xticks(RANGE)
  plt.plot(RANGE, vals, 'ro-')


RANGE = [i for i in range(1, 11)]

vals = [600.0, 222.3, 139.8, 114.0, 90.8, 80.8, 70.7, 62.8, 55.5, 47.5]
plot_vals(vals, RANGE)

这是一个可以根据需要构建的精简示例:

import matplotlib.pyplot as plt
plt.plot([1,2,3,4,5,6,7,8,9,10], [600.0, 222.3, 139.8, 114.0, 90.8, 80.8, 70.7, 62.8, 55.5, 47.5])