【问题标题】:How can I plot with a fewer markers than the data points?如何使用比数据点更少的标记进行绘图?
【发布时间】:2021-07-17 21:21:50
【问题描述】:

我在 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。

【问题讨论】:

  • @BigBen 我为我正在尝试做的事情添加了一个示例代码。
  • @RyanHaining 我正在使用 python3

标签: python matplotlib


【解决方案1】:

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

plt.xticks(np.arange(3000000, 12000000, step=1000000))

定义步骤将确保您有 1MHz 的空间。

你可以在这里找到更多:

编辑:

如果您想在 x 刻度上显示 MHz,您可以执行以下操作:

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()

输出:https://i.stack.imgur.com/JdIM3.png

否则,您可以按照其他答案中的说明进行操作:

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()

输出:https://i.stack.imgur.com/Vc1gb.png2

【讨论】:

  • 仍然显示 1e7。我想显示 1MHz 到 12MHz。我不希望 1e7 像我在上面的问题中发布的图片一样。
  • 刚刚编辑了答案。让我知道这是否是您要找的。​​span>
【解决方案2】:

您想在 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()

【讨论】:

    猜你喜欢
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 2018-12-09
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多