在 MATLAB 上创建正方形网格时如何去除 'fishbowl' 效果?

How can I remove the 'fishbowl' effect when creating a square grid on MATLAB?

我一直在尝试创建一个表示具有 8 个节点的正方形网格的图形。我一直在使用 Mathworks here:

给出的代码
n = 8;
A = delsq(numgrid('S',n+2));
G = graph(A,'omitselfloops');
p = plot(G);` 

绘制结果为:

但我只是想知道是否可以使图像不那么弯曲。为了使图形看起来更'uniform'并且所有边的长度相同。

G 不包含节点的坐标,因此 MATLAB 基本上必须“猜测”将它们放在哪里(并且做得非常好)。您可以使用附加参数 XDataYData(和 ZData)将坐标添加到您的节点(参见 documentation),因此在您的情况下您可能想要使用例如meshgrid:

n = 8; 
A = delsq(numgrid('S',n+2)); 
G = graph(A,'omitselfloops'); 
[x,y] = meshgrid(1:n, 1:n);
p = plot(G, 'XData',x(:), 'YData',y(:));