matplotlib.pyplot 在相等范围内绘制 x 轴刻度

matplotlib.pyplot plot x-axis ticks in equal range

我需要针对一系列 x 值绘制一系列 y 值。 x 值在很大范围内变化。 pyplot 似乎使用线性 x 轴。所以下面的代码给了我一个不好的数字。

def bad_plot():
    x=[1,2,10,100,1000]
    y=[5,10,6,7,9]
    plt.plot(x,y,'rs')
    plt.show()                

前三个点 (1,5), (2,10), (10,6) 非常接近。我希望 x 轴只有 5 个刻度 [1,2,10,100,100],并且它们 均匀分布在 x 轴 上。我怎样才能做到这一点?非常感谢。

郑重声明,我认为这是一个糟糕的图形设计选择。 non-regular(无论是线性的还是对数的)有规律的时间间隔会让 reader.

感到困惑

好吧,你只需要做的就是针对 0, 1, 2, 3, ... 进行绘图,然后使用 plt.xticks()

在同一位置将刻度设置为 x 的值
import numpy as np
import matplotlib.pyplot as plt

x=[1,2,10,100,1000]
y=[5,10,6,7,9]

N = len(x)
x2 = np.arange(N)

plt.plot(x2, y)

plt.xticks(x2, x)

plt.show()