#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(:));