Как я могу удалить эффект «аквариума» при создании квадратной сетки в MATLAB?

#matlab #graph #grid #graph-theory

Вопрос:

Я пытался создать график, представляющий квадратную сетку с 8 узлами. Я использовал код, предоставленный Mathworks здесь:

 n = 8;
A = delsq(numgrid('S',n 2));
G = graph(A,'omitselfloops');
p = plot(G);` 
 

Отображаемый результат:

введите описание изображения здесь

Но мне просто интересно, могу ли я сделать изображение менее изогнутым. Для того, чтобы график выглядел более «однородным» и имел все ребра одинаковой длины.

Ответ №1:

График G не содержит координат для узлов, поэтому MATLAB в основном должен «угадать», куда их поместить (и делает замечательно хорошую работу). Вы можете использовать дополнительный аргумент XData YData ZData ) для добавления координат к вашим узлам (см. Документацию), поэтому в вашем случае вы можете использовать, например 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(:));