matplotlib x 轴值

matplotlib x axis values

我对 matplotlib 中绘图的图形表示有疑问。 有两个问题:

  1. 我没有为每个 x 值计算 y。 例如列表 y: [1.0, 3.5, 3.3, 1.1, 2.4] 不对应于 x: [1, 2, 3, 4, 5],而是 [2, 6, 10, 14, 18](空格总是规则的)。

我已经解决了这个问题,但是以非常不合理的方式:

plt.xticks(list(range(len(my_list))), list(range(bound[0], bound[1] + 1, delta)))

结果好像还不错:

  1. 边界越宽,问题就越大。例子:

范围是从 2 到 1000,增量为 10。 x 轴值为 [2, 12, 22, 32, ...] 但它完全不可读

所以...我已经尝试了很多来创造更好的东西。我以晦涩难懂的代码结尾:

    n_x_axis = 10 #number of values on axis
    x_axis_val = list(range(bound[0], bound[1]+1, delta))
    a = len(my_list)
    b = int(((bound[1]-bound[0] + 1)/delta)//n_x_axis)
    for i in range(0, a, b):
        if i + b < a:
            for j in range(b):
                if j != 0:
                    x_axis_val[i+j] = None
        else:
            for x in range(i, a):
                if x != a-1:
                    x_axis_val[x] = None

    plt.plot(my_list)
    plt.title("my_list")
    plt.xticks(list(range(len(my_list))), x_axis_val)

结果如下: 绑定 = (2, 10000) 增量 = 10

我确信有更好的方法可以解决我的问题。也许这有一些适当的功能...... 尽管我的解决方案如此广泛,但仍然有缺点,例如 x 轴上的点太密集了。

我该如何改进这个解决方案? 提前谢谢你。

您只需为相应的 y 值定义 x 值,然后使用

绘制
plt.plot(x, y)

这样一来,你就不需要搞乱任何滴答声了; matplotlib 将自行执行此操作。您可以获得 x 值的列表,步骤为 4 例如

np.arange(0, 1000, 4)

文档: