【问题标题】:How do I plot a regular grid in matplotlib as a background如何在 matplotlib 中绘制常规网格作为背景
【发布时间】:2020-03-06 18:15:08
【问题描述】:

我想在 2D 绘图线的背景上绘制一个网格,类似于 ECG 演示,即在规则间隔中的特定点显示点,例如就像这张图片

在此示例中,主点之间正好有 4 个点。想要我不想要的就是这样的Plotting a grid with Matplotlib,即只是虚线网格线

到目前为止我所做的(来自古代 matlab 知识)是这样的:

 xg = np.linspace(iStart/fs, iEnd/fs, len(y))
 yrange = ax.get_ylim()
 yg = np.linspace(yrange[0], yrange[1], 4)
 xx, yy = np.meshgrid(xg, yg)
 gridpoints, = plt.plot(xx.reshape(1,-1),yy.reshape(1,-1),linewidth=0.3,color='0.75',marker=".",markersize=10)

但它让我明白了:

我做错了什么?

【问题讨论】:

  • 我认为你不需要走那么远。你能试试只用plt.grid()吗?
  • 对不起,我想要一个精确定义的网格图案,但网格没有给我
  • plt.gird()有几个选项,你确定不能在那里定义吗?
  • @jpnadas 我仔细检查了文档,但我看不到
  • 看看主要/次要网格线......它可能对你有用。

标签: python matplotlib


【解决方案1】:

正如 jpnadas 所说,您可以使用 plt.grid()

这里是一个关于如何放置和自定义网格的示例

import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator

img = plt.imread(imagename)
_, ax = plt.subplots(ncols=1,nrows=1)
ax.imshow(img)

plt.gca().xaxis.set_major_locator(MultipleLocator(16))
plt.gca().yaxis.set_major_locator(MultipleLocator(16))
plt.gca().xaxis.set_minor_locator(MultipleLocator(32))
plt.gca().yaxis.set_minor_locator(MultipleLocator(32))

# Don't allow the axis to be on top of your data
ax.set_axisbelow(True)
# Turn on the minor TICKS, which are required for the minor GRID
ax.minorticks_on()
# Customize the major grid
ax.grid(which='major', linestyle='-', linewidth='4', color='yellow')
# Customize the minor grid
ax.grid(which='minor', linestyle=':', linewidth='2', color='blue')

plt.show()

【讨论】:

  • 感谢您的建议,但我必须澄清:我想要的是定义的点间隔。我想在主要点之间恰好有四个小点。我会将这些信息添加到原始帖子的解释中。
  • 可以在两个ax.grid()中使用linestyle=(0, (1, 4)), and linestyle=(0, (1, 2))。但我认为它没有解决,因为我无法“对齐”点
【解决方案2】:

我发现了我的错误。我的想法不是错误,而是我在 x 的 linspace 中的 len(y) 引用了错误的向量,从而产生了一个太细的网格,看起来像一条线。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 2021-02-27
    相关资源
    最近更新 更多