You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何重网格化得到等间距格点并解决网格显示白线异常问题

重网格化前原始网格

下图为重网格化前的原始网格,我使用如下代码执行重网格化操作:

x1 = np.linspace(min(x),max(x),len(x)) # 此处将原x序列调整为等间距,长度保持为128
y1 = np.linspace(min(y),max(y),len(y))

XX,YY = np.meshgrid(x1, y1) # 生成二维网格
plt.plot(XX,YY)
plt.title('new grid')

重网格化后新网格

执行上述代码后得到新的网格,可见网格显示中彩色线条之间会周期性出现白线。请问如何调整以实现以下任意一种效果:要么让彩色线条之间的白线间距保持一致,要么完全消除白线?要求重网格化后x轴的总长度保持不变。


问题原因

出现周期性不均匀白线是两个原因导致的:

  • plt.plot(XX,YY)默认循环使用matplotlib自带的配色绘制每条网格线,线密度过高时渲染会出现视觉间隙
  • 当前写法同时绘制了x、y两个方向的所有网格线,线条叠加的逻辑也会产生不均匀空白

方案1:完全消除白线

统一网格线配色,调整线宽适配密度即可,原有重网格化逻辑不变,x轴总长度符合要求:

import numpy as np
import matplotlib.pyplot as plt

x1 = np.linspace(min(x),max(x),len(x)) 
y1 = np.linspace(min(y),max(y),len(y))
XX,YY = np.meshgrid(x1, y1)

# 统一颜色绘制两个方向的网格线,调整线宽避免间隙
plt.plot(XX, YY, color='#666666', linewidth=0.6, antialiased=True)
plt.plot(XX.T, YY.T, color='#666666', linewidth=0.6, antialiased=True)

plt.title('new grid')
plt.show()

如果还有轻微间隙,可以把linewidth数值再调大0.1~0.3。

方案2:保持白线间距均匀

如果需要保留间隔白线的效果,手动控制绘制间隔即可,比如每固定条数的网格线跳过绘制,形成均匀空白:

x1 = np.linspace(min(x),max(x),len(x)) 
y1 = np.linspace(min(y),max(y),len(y))
XX,YY = np.meshgrid(x1, y1)

# 间隔数可自行调整,下面示例每3条线留1条空白
gap = 3
# 绘制x方向网格线
for i in range(XX.shape[0]):
    if i % gap != 0:
        plt.plot(XX[i,:], YY[i,:], color='steelblue', linewidth=0.5)
# 绘制y方向网格线
for j in range(XX.shape[1]):
    if j % gap != 0:
        plt.plot(XX[:,j], YY[:,j], color='steelblue', linewidth=0.5)

plt.title('new grid')
plt.show()

内容的提问来源于stack exchange,提问作者wosker4yan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 17:36:01