如何在R中重新排列图表

时间:2017-02-10 17:53:00

标签: r diagrammer

我将diagrammer更新为版本0.9.0,并开始从相同的数据中呈现不同的图表。我的数据框现在看起来像这样:

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

其余代码如下所示:

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)

当使用代码时,我得到这个图:

enter image description here

什么时候看起来像这样:

enter image description here

3 个答案:

答案 0 :(得分:4)

使用attr_theme = NULL创建图表:

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

在当前版本中,DiagrammeR将全局属性layout设置为 neato 。 您可以通过以下方式查看:

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

创建图形对象后,您还可以使用set_global_graph_attrs设置这些属性。

答案 1 :(得分:2)

  

创建图形对象后,您还可以使用set_global_graph_attrs设置这些属性。

我尝试了以上操作,但在执行以下操作时失败了:

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)

输出仍然具有与之前相同的图形属性。

使用magrittr %>%然后为我工作。

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"))

此处所有节点,边缘和图形属性的文档:http://www.graphviz.org/doc/info/attrs.html#h:uses

答案 2 :(得分:0)

*set_global_graph*_attrs 现在 *add_global_graph_attrs*(2020年1月)