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

标签 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 轴上。我怎样才能做到这一点?非常感谢。

最佳答案

郑重声明,我认为这是一个糟糕的图形设计选择。以固定间隔进行非常规(无论是线性还是对数)滴答会让读者感到困惑。

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

Example

关于python - matplotlib.pyplot 在相等范围内绘制 x 轴刻度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28077499/

相关文章:

python - pandas python 值的唯一出现次数的计数

python - 使用颜色条在绘图中设置相等的纵横比

matplotlib - 为什么 Matplotlib GUI 在 IDLE 和 Spyder 中发生变化?

python - Matplotlib 2.2.2 无法 xkcdify 绘图

python - Tensorflow softmax_cross...()函数float类型错误

python - 我应该在抽象方法的主体中放什么?

python - 如何获取 Keras 中 ImageDataGenerator 的 .flow_from_directory 函数扫描的类的名称?

python - 输入/输出矢量 shapefile 的测试点

python - 子集维恩图 - 即嵌入整个集合的维恩图

python - 在 Python 中有效地从文件中读取第 n 行