Associate vertex coordinates and labels
$begingroup$
This sounds easy (in which case I will delete my question) and maybe I am getting a bit tired, but I can't find an easy way to create a list from an automatically-generated graph where vertices labels and coordinates are associated, e.g. {index_vertex, {x,y}}
.
From this image...
...here is my code so far:
image = Import["https://i.stack.imgur.com/5ZNrE.png"];
mask = FillingTransform[Thinning[Binarize[ColorReplace[image, White -> Black, .055], 0]], CornerNeighbors -> True];
skel = Thinning[mask];
morphograph = MorphologicalGraph[skel, VertexSize -> 2, VertexLabels -> "Index"];
newtreegraph = TreeGraph[DeleteCases[EdgeList[morphograph], x_ [UndirectedEdge] x_], VertexCoordinates -> GraphEmbedding[morphograph], VertexSize -> 5, VertexLabels -> "Index"]
that generates this nice TreeGraph
From that, I can obtain the EdgeList
and vertices coordinates via GraphEmbedding
but cannot easily connect the two... There must be an easy way I can't find ... Thanks
list-manipulation graphs-and-networks
$endgroup$
add a comment |
$begingroup$
This sounds easy (in which case I will delete my question) and maybe I am getting a bit tired, but I can't find an easy way to create a list from an automatically-generated graph where vertices labels and coordinates are associated, e.g. {index_vertex, {x,y}}
.
From this image...
...here is my code so far:
image = Import["https://i.stack.imgur.com/5ZNrE.png"];
mask = FillingTransform[Thinning[Binarize[ColorReplace[image, White -> Black, .055], 0]], CornerNeighbors -> True];
skel = Thinning[mask];
morphograph = MorphologicalGraph[skel, VertexSize -> 2, VertexLabels -> "Index"];
newtreegraph = TreeGraph[DeleteCases[EdgeList[morphograph], x_ [UndirectedEdge] x_], VertexCoordinates -> GraphEmbedding[morphograph], VertexSize -> 5, VertexLabels -> "Index"]
that generates this nice TreeGraph
From that, I can obtain the EdgeList
and vertices coordinates via GraphEmbedding
but cannot easily connect the two... There must be an easy way I can't find ... Thanks
list-manipulation graphs-and-networks
$endgroup$
add a comment |
$begingroup$
This sounds easy (in which case I will delete my question) and maybe I am getting a bit tired, but I can't find an easy way to create a list from an automatically-generated graph where vertices labels and coordinates are associated, e.g. {index_vertex, {x,y}}
.
From this image...
...here is my code so far:
image = Import["https://i.stack.imgur.com/5ZNrE.png"];
mask = FillingTransform[Thinning[Binarize[ColorReplace[image, White -> Black, .055], 0]], CornerNeighbors -> True];
skel = Thinning[mask];
morphograph = MorphologicalGraph[skel, VertexSize -> 2, VertexLabels -> "Index"];
newtreegraph = TreeGraph[DeleteCases[EdgeList[morphograph], x_ [UndirectedEdge] x_], VertexCoordinates -> GraphEmbedding[morphograph], VertexSize -> 5, VertexLabels -> "Index"]
that generates this nice TreeGraph
From that, I can obtain the EdgeList
and vertices coordinates via GraphEmbedding
but cannot easily connect the two... There must be an easy way I can't find ... Thanks
list-manipulation graphs-and-networks
$endgroup$
This sounds easy (in which case I will delete my question) and maybe I am getting a bit tired, but I can't find an easy way to create a list from an automatically-generated graph where vertices labels and coordinates are associated, e.g. {index_vertex, {x,y}}
.
From this image...
...here is my code so far:
image = Import["https://i.stack.imgur.com/5ZNrE.png"];
mask = FillingTransform[Thinning[Binarize[ColorReplace[image, White -> Black, .055], 0]], CornerNeighbors -> True];
skel = Thinning[mask];
morphograph = MorphologicalGraph[skel, VertexSize -> 2, VertexLabels -> "Index"];
newtreegraph = TreeGraph[DeleteCases[EdgeList[morphograph], x_ [UndirectedEdge] x_], VertexCoordinates -> GraphEmbedding[morphograph], VertexSize -> 5, VertexLabels -> "Index"]
that generates this nice TreeGraph
From that, I can obtain the EdgeList
and vertices coordinates via GraphEmbedding
but cannot easily connect the two... There must be an easy way I can't find ... Thanks
list-manipulation graphs-and-networks
list-manipulation graphs-and-networks
edited Feb 21 at 13:05
Henrik Schumacher
57.7k579159
57.7k579159
asked Feb 21 at 13:01
ValacarValacar
550213
550213
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
$begingroup$
Do you mean this?
AssociationThread[
VertexList[newtreegraph],
PropertyValue[newtreegraph, VertexCoordinates]
]
<|1 -> {677.5, 957.5}, 8 -> {677.5, 953.5}, <<459>>, 455 -> {300.5, 84.5}|>
$endgroup$
2
$begingroup$
Instead ofPropertyValue[newtreegraph, VertexCoordinates]
you can also useGraphEmbedding[newtreegraph]
.
$endgroup$
– Szabolcs
Feb 21 at 16:29
$begingroup$
Yes thanks! That was indeed pretty easy...
$endgroup$
– Valacar
Feb 21 at 21:28
1
$begingroup$
You're welcome! Might seem easy (afterwards), but this was also a question worthwhile to ask (+1).
$endgroup$
– Henrik Schumacher
Feb 21 at 21:30
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
});
});
}, "mathjax-editing");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "387"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f191935%2fassociate-vertex-coordinates-and-labels%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
Do you mean this?
AssociationThread[
VertexList[newtreegraph],
PropertyValue[newtreegraph, VertexCoordinates]
]
<|1 -> {677.5, 957.5}, 8 -> {677.5, 953.5}, <<459>>, 455 -> {300.5, 84.5}|>
$endgroup$
2
$begingroup$
Instead ofPropertyValue[newtreegraph, VertexCoordinates]
you can also useGraphEmbedding[newtreegraph]
.
$endgroup$
– Szabolcs
Feb 21 at 16:29
$begingroup$
Yes thanks! That was indeed pretty easy...
$endgroup$
– Valacar
Feb 21 at 21:28
1
$begingroup$
You're welcome! Might seem easy (afterwards), but this was also a question worthwhile to ask (+1).
$endgroup$
– Henrik Schumacher
Feb 21 at 21:30
add a comment |
$begingroup$
Do you mean this?
AssociationThread[
VertexList[newtreegraph],
PropertyValue[newtreegraph, VertexCoordinates]
]
<|1 -> {677.5, 957.5}, 8 -> {677.5, 953.5}, <<459>>, 455 -> {300.5, 84.5}|>
$endgroup$
2
$begingroup$
Instead ofPropertyValue[newtreegraph, VertexCoordinates]
you can also useGraphEmbedding[newtreegraph]
.
$endgroup$
– Szabolcs
Feb 21 at 16:29
$begingroup$
Yes thanks! That was indeed pretty easy...
$endgroup$
– Valacar
Feb 21 at 21:28
1
$begingroup$
You're welcome! Might seem easy (afterwards), but this was also a question worthwhile to ask (+1).
$endgroup$
– Henrik Schumacher
Feb 21 at 21:30
add a comment |
$begingroup$
Do you mean this?
AssociationThread[
VertexList[newtreegraph],
PropertyValue[newtreegraph, VertexCoordinates]
]
<|1 -> {677.5, 957.5}, 8 -> {677.5, 953.5}, <<459>>, 455 -> {300.5, 84.5}|>
$endgroup$
Do you mean this?
AssociationThread[
VertexList[newtreegraph],
PropertyValue[newtreegraph, VertexCoordinates]
]
<|1 -> {677.5, 957.5}, 8 -> {677.5, 953.5}, <<459>>, 455 -> {300.5, 84.5}|>
answered Feb 21 at 13:07
Henrik SchumacherHenrik Schumacher
57.7k579159
57.7k579159
2
$begingroup$
Instead ofPropertyValue[newtreegraph, VertexCoordinates]
you can also useGraphEmbedding[newtreegraph]
.
$endgroup$
– Szabolcs
Feb 21 at 16:29
$begingroup$
Yes thanks! That was indeed pretty easy...
$endgroup$
– Valacar
Feb 21 at 21:28
1
$begingroup$
You're welcome! Might seem easy (afterwards), but this was also a question worthwhile to ask (+1).
$endgroup$
– Henrik Schumacher
Feb 21 at 21:30
add a comment |
2
$begingroup$
Instead ofPropertyValue[newtreegraph, VertexCoordinates]
you can also useGraphEmbedding[newtreegraph]
.
$endgroup$
– Szabolcs
Feb 21 at 16:29
$begingroup$
Yes thanks! That was indeed pretty easy...
$endgroup$
– Valacar
Feb 21 at 21:28
1
$begingroup$
You're welcome! Might seem easy (afterwards), but this was also a question worthwhile to ask (+1).
$endgroup$
– Henrik Schumacher
Feb 21 at 21:30
2
2
$begingroup$
Instead of
PropertyValue[newtreegraph, VertexCoordinates]
you can also use GraphEmbedding[newtreegraph]
.$endgroup$
– Szabolcs
Feb 21 at 16:29
$begingroup$
Instead of
PropertyValue[newtreegraph, VertexCoordinates]
you can also use GraphEmbedding[newtreegraph]
.$endgroup$
– Szabolcs
Feb 21 at 16:29
$begingroup$
Yes thanks! That was indeed pretty easy...
$endgroup$
– Valacar
Feb 21 at 21:28
$begingroup$
Yes thanks! That was indeed pretty easy...
$endgroup$
– Valacar
Feb 21 at 21:28
1
1
$begingroup$
You're welcome! Might seem easy (afterwards), but this was also a question worthwhile to ask (+1).
$endgroup$
– Henrik Schumacher
Feb 21 at 21:30
$begingroup$
You're welcome! Might seem easy (afterwards), but this was also a question worthwhile to ask (+1).
$endgroup$
– Henrik Schumacher
Feb 21 at 21:30
add a comment |
Thanks for contributing an answer to Mathematica Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f191935%2fassociate-vertex-coordinates-and-labels%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown