我需要针对一系列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轴上均匀分散。我怎样才能做到这一点?非常感谢。
答案 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()