graph.formula             package:igraph             R Documentation

_C_r_e_a_t_i_n_g (_s_m_a_l_l) _g_r_a_p_h_s _v_i_a _a _s_i_m_p_l_e _i_n_t_e_r_f_a_c_e

_D_e_s_c_r_i_p_t_i_o_n:

     This function is useful if you want to create a small (named)
     graph quickly, it works for both directed and undirected graphs.

_U_s_a_g_e:

     graph.formula(...)

_A_r_g_u_m_e_n_t_s:

     ...: The formulae giving the structure of the graph, see details
          below.

_D_e_t_a_i_l_s:

     'graph.formula' is very handy for creating small graphs quickly.
     You need to supply one or more R expressions giving the structure
     of the graph. The expressions consist of vertex names and edge
     operators. An edge operator is a sequence of ''-'' and ''+''
     characters, the former is for the edges and the latter is used for
     arrow heads. The edges can be arbitrarily long, ie. you may use as
     many ''-'' characters to "draw" them as you like.

     If all edge operators consist of only ''-'' characters then the
     graph will be undirected, whereas a single ''+'' character implies
     a directed graph.

     Let us see some simple examples. Without arguments the function
     creates an empty graph:


         graph.formula()

     A simple undirected graph with two vertices called 'A' and 'B' and
     one edge only:


         graph.formula(A-B)

     Remember that the length of the edges does not matter, so we could
     have written the following, this creates the same graph:


         graph.formula( A-----B )

     If you have many disconnected components in the graph, separate
     them with commas. You can also give isolate vertices.


         graph.formula( A--B, C--D, E--F, G--H, I, J, K )

     The '':'' operator can be used to define vertex sets. If an edge
     operator connects two vertex sets then every edge from the first
     set will be connected to every edge in the second set. The
     following form creates a full graph, including loop edges:


         graph.formula( A:B:C:D -- A:B:C:D )

     In directed graphs, edges will be created only if the edge
     operator includes a arrow head ('+') _at the end_ of the edge:


         graph.formula( A -+ B -+ C )
         graph.formula( A +- B -+ C )
         graph.formula( A +- B -- C )

     Thus in the third example no edge is created between vertices 'B'
     and 'C'.

     Mutual edges can be also created with a simple edge operator:


         graph.formula( A +-+ B +---+ C ++ D + E)

     Note again that the length of the edge operators is arbitrary,
     ''+'', ''++'' and ''+-----+'' have exactly the same meaning.

     If the vertex names include spaces or other special characters
     then you need to quote them:


         graph.formula( "this is" +- "a silly" -+ "graph here" )

     You can include any character in the vertex names this way, even
     '+' and '-' characters.

     See more examples below.

_V_a_l_u_e:

     A new graph object.

_A_u_t_h_o_r(_s):

     Gabor Csardi csardi@rmki.kfki.hu

_S_e_e _A_l_s_o:

     'graph' for more general graph creation methods.

_E_x_a_m_p_l_e_s:

     # A simple undirected graph
     g <- graph.formula( Alice-Bob-Cecil-Alice, Daniel-Cecil-Eugene, Cecil-Gordon )
     g

     # Another undirected graph, ":" notation
     g2 <- graph.formula( Alice-Bob:Cecil:Daniel, Cecil:Daniel-Eugene:Gordon )
     g2

     # A directed graph
     g3 <- graph.formula( Alice +-+ Bob --+ Cecil +-- Daniel,
                          Eugene --+ Gordon:Helen )
     g3

     # A graph with isolate vertices
     g4 <- graph.formula( Alice -- Bob -- Daniel, Cecil:Gordon, Helen )
     g4
     V(g4)$name

     # "Arrows" can be arbitrarily long
     g5 <- graph.formula( Alice +---------+ Bob )
     g5

     # Special vertex names
     g6 <- graph.formula( "+" -- "-", "*" -- "/", "%%" -- "%/%" )
     g6

