Python 如何使用比数据点更少的标记进行绘图?

Python 如何使用比数据点更少的标记进行绘图?,python,matplotlib,Python,Matplotlib,我在x上的数据是从3MHz到12MHz,我不想显示x轴上的所有点,而是我想显示一个从3MHz到12MHz的间隔,每个部分间隔1MHz 下面是一个示例代码 import numpy as np import matplotlib.pyplot as plt x_array = np.arange(3000000, 12000000) y_array = np.arange(3000000, 12000000) plt.plot(x_array, y_array) plt.show() 我希

我在x上的数据是从3MHz到12MHz,我不想显示x轴上的所有点,而是我想显示一个从3MHz到12MHz的间隔,每个部分间隔1MHz

下面是一个示例代码

import numpy as np
import matplotlib.pyplot as plt

x_array = np.arange(3000000, 12000000)
y_array = np.arange(3000000, 12000000)

plt.plot(x_array, y_array)
plt.show()

我希望x轴第一个标记为3MHz,第二个标记为4MHz,以此类推,频率最高可达12MHz。

您可以使用以下命令更改matplotlib XTick:

plt.xticks(np.arange(3000000, 12000000, step=1000000))
import numpy as np
import matplotlib.pyplot as plt

x_array = np.arange(3000000, 12000000)
y_array = np.arange(3000000, 12000000)

plt.plot(x_array, y_array)
plt.xticks(ticks=np.arange(3, 13)*1e6, labels=[str(t) + "MHz" for t in np.arange(3, 13)])
plt.show()
定义步骤将确保您有1MHz的空间

您可以在此处找到更多信息:

编辑:

如果希望将MHz设置在x刻度上,可以执行以下操作:

plt.xticks(np.arange(3000000, 12000000, step=1000000))
import numpy as np
import matplotlib.pyplot as plt

x_array = np.arange(3000000, 12000000)
y_array = np.arange(3000000, 12000000)

plt.plot(x_array, y_array)
plt.xticks(ticks=np.arange(3, 13)*1e6, labels=[str(t) + "MHz" for t in np.arange(3, 13)])
plt.show()
输出:

否则,您可以按照另一个答案中提到的操作:

import numpy as np
import matplotlib.pyplot as plt

x_array = np.arange(3000000, 12000000)
y_array = np.arange(3000000, 12000000)

plt.plot(x_array, y_array)
plt.xticks(ticks=np.arange(3, 13)*1e6, labels=np.arange(3, 13))
plt.xlabel("Frequency (MHz)")
plt.show()

输出:

您想在x轴上使用MHz吗?然后在
x
数组的定义中使用兆赫并乘以10⁶ 在后续计算中将阵列用作频率时

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(3, 12, 901)
f = x*1E6
def H(f) : return f

plt.plot(x, H(f))
plt.xticks(range(3, 13))
plt.xlabel('Frequency/MHz')
plt.ylabel('Transfer function')
plt.grid()
plt.show()

@BigBen我添加了一个示例代码,说明我正在尝试做的事情。@RyanHaining我正在使用Python 3,直到显示1e7。我想显示1MHz到12MHz。我不希望1e7与我在上面问题中发布的图片相同。只是编辑了答案。让我知道这是否是你要找的。