2017-02-10 8 views
3

Ich aktualisierte meine diagrammer auf Version 0.9.0 und begann verschiedene Diagramm aus den gleichen Daten zu machen. Mein Datenrahmen sieht nun wie folgt aus:Wie neu anordnen Diagramm in R

df <- data.frame(col1 = c("Cat", "Dog", "Bird"), 
       col2 = c("Feline", "Canis", "Avis"), 
       stringsAsFactors=FALSE) 

Der Rest des Codes sieht wie folgt aus:

uniquenodes <- unique(c(df$col1, df$col2)) 
library(DiagrammeR) 
nodes <- create_node_df(n=length(uniquenodes), nodes = seq(uniquenodes), type="number", label=uniquenodes) 
edges <- create_edge_df(from=match(df$col1, uniquenodes), to=match(df$col2, uniquenodes), rel="related") 

g <- create_graph(nodes_df=nodes, edges_df=edges) 
render_graph(g) 

Wenn Code verwendet wird, bekomme ich dieses Diagramm:

enter image description here

Wenn es wie folgt aussehen sollte:

enter image description here

Antwort

4

erstellen Graph mit attr_theme = NULL:

g <- create_graph(nodes_df=nodes, edges_df=edges, attr_theme = NULL) 

In der aktuellen Version setzt diagrammer das globale Attribut layout zu neato. Sie können dies mit:

g <- create_graph(nodes_df=nodes, edges_df=edges) 
get_global_graph_attrs(g) 

#   attr  value attr_type 
# 1  layout  neato  graph 
# 2 outputorder edgesfirst  graph 
# 3  fontname Helvetica  node 
# 4  fontsize   10  node 
# 5  shape  circle  node 
# 6 fixedsize  true  node 
# 7  width  0.5  node 
# 8  style  filled  node 
# 9 fillcolor aliceblue  node 
# 10  color  gray70  node 
# 11 fontcolor  gray50  node 
# 12   len  1.5  edge 
# 13  color  gray40  edge 
# 14 arrowsize  0.5  edge 

Sie können auch diese Attribute mit set_global_graph_attrs nach dem Erstellen des Diagrammobjekt gesetzt.

+0

Ich habe versucht, andere Optionen wie attr_theme = circo oder twopi aber es funktioniert nicht. Wie kann ich es tun? @ larnsce Lösung funktioniert auch nicht für mich – skan

2

Sie können diese Attribute auch nach dem Erstellen des Diagrammobjekts mit set_global_graph_attrs festlegen.

habe ich versucht, die oben und schlug fehl, wenn die folgenden Aktionen ausführen:

set_global_graph_attrs(
    graph = graph, 
    attr = c("layout", "rankdir", "splines"), 
    value = c("dot", "LR", "false"), 
    attr_type = c("graph", "graph", "graph")) 

render_graph(graph2) 

Der Ausgang immer noch das gleiche Diagramm wie zuvor haben würde Attribute.

die magrittr %>% Mit dann für mich gearbeitet.

graph1 <- 
    create_graph(
     nodes_df = ndf, 
     edges_df = edf) %>% 
    set_global_graph_attrs(
     attr = c("layout", "rankdir", "splines"), 
     value = c("dot", "LR", "false"), 
     attr_type = c("graph", "graph", "graph")) 

Dokumentation für alle Knoten, Kante und Grafik-Attribute hier: http://www.graphviz.org/doc/info/attrs.html#h:uses