7

I want to add a new vertex to a graph, with fixed VertexCoordinates but when I use VertexAdd, the new graph does not have the VertexCoordinates of the previous one.

g = Graph[{1 -> 2}, VertexCoordinates -> {{0, 0.5}, {0.5, 0}}, 
  PlotRange -> 1]

This is the initial graph

g = VertexAdd[g, 3]

Adding a new vertex makes a new graph with automatic coordinates.

I tried to see if there is a way to define the coordinates when adding a new vertex but I could not find anything.

Also I was looking if there is something like:

SetProperty[g, VectorCoordinates -> {list of coordinates}]

To set coordinates for all vertices in a graph, but I could not find anything.

user9068
  • 297
  • 2
  • 6
  • 2
    related questions: http://mathematica.stackexchange.com/questions/31014/how-to-add-new-nodes-to-an-existing-graph-with-fixed-coordinates-nodes – halmir Aug 27 '13 at 17:56

1 Answers1

10

Here is your Graph

g = Graph[{1 -> 2}, VertexCoordinates -> {{0, 0.5}, {0.5, 0}},PlotRange -> 1]

You can try this!

g = SetProperty[VertexAdd[g, {3, 4}],
VertexCoordinates-> PropertyValue[g, VertexCoordinates]~Join~{{.7, .6}, {-.2, -.3}}];

The graph will retain its VetexCoordinates

EdgeAdd[g, 1 -> 4]

enter image description here

PlatoManiac
  • 14,723
  • 2
  • 42
  • 74