我需要针对一系列 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, 1, 2, 3, ...
进行绘图,然后将刻度设置为 x
的值使用 plt.xticks()
的相同位置
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()
关于python - matplotlib.pyplot 在相等范围内绘制 x 轴刻度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28077499/