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

时间:2015-01-21 21:50:08

标签: python matplotlib

我需要针对一系列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()                

enter image description here

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

1 个答案:

答案 0 :(得分:4)

为了记录,我认为这对于图形来说是一个糟糕的设计选择。定期(如果是线性或对数)刻度线会让读者感到困惑。

好的,您只需要针对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()

Example