MATLAB创建方形网格图时如何消除‘鱼缸’效应实现边等长规整
MATLAB方形网格图规整化实现方法
现象说明
使用默认参数绘制方形网格图时会出现边缘向内收缩的“鱼缸”弯曲效应,无法保证所有边长度一致、网格均匀规整。
原因
MATLAB的graph对象默认采用力导向布局算法,该算法会优先避免节点和边重叠,导致边缘节点出现位置偏移,破坏网格的规整性。
解决方案
方案1:手动指定节点坐标(精度最高)
直接生成对应尺寸的网格坐标传入绘图参数,完全控制节点排布:
n = 8; A = delsq(numgrid('S',n+2)); G = graph(A,'omitselfloops'); % 生成n×n网格的坐标矩阵 [x,y] = meshgrid(1:n,1:n); % 绘图时传入坐标,同时设置坐标轴等比例避免拉伸 p = plot(G,'XData',x(:),'YData',y(:)); axis equal
方案2:指定网格布局(操作最简)
不需要手动计算坐标,直接调用内置网格布局即可:
n = 8; A = delsq(numgrid('S',n+2)); G = graph(A,'omitselfloops'); p = plot(G,'Layout','grid'); axis equal
两种方案都可以实现完全规整的方形网格效果,所有边长度一致,无弯曲变形。
内容的提问来源于stack exchange,提问作者emily susan
相关产品推荐
相关产品推荐

