2016-08-24 4 views
0

Я пытаюсь использовать график GraphViz в DiagrammeR. Как я могу это сделать?Как использовать графики GraphViz в DiagrammeR для R

myGraph = grViz(" 
digraph boxes_and_circles { 

    # a 'graph' statement 
    graph [overlap = true, fontsize = 10] 

    # several 'node' statements 
    node [shape = box, 
     fontname = Helvetica] 
    A; B; C; D; E; F 

    node [shape = circle, 
     fixedsize = true, 
     width = 0.9] // sets as circles 
    1; 2; 3; 4; 5; 6; 7; 8 

    # several 'edge' statements 
    A->1 B->2 B->3 B->4 C->A 
    1->D E->A 2->4 1->5 1->F 
    E->6 4->6 5->7 6->7 3->8 
} 
") 

, а затем я хочу использовать его в DiagrammeR, но это не позволит.

render_graph(myGraph) 

Дает:

Error: class(graph) == "dgr_graph" are not all TRUE 

Есть ли способ, мне нужно преобразовать или ввести график GraphViz в окружающую среду Diagrammer?

+0

grViz возвращает объект класса htmlwidget и не dgr_graph. Вы можете напрямую визуализировать myGraph. используйте функцию create_graph из DiagrammeR, чтобы иметь возможность использовать render_graph. – tokiloutok

+0

К сожалению, 'gd = create_graph (myGraph)' дает следующую ошибку: Ошибка: «узлы»% в% colnames (nodes_df) не TRUE' - я не понимаю, как указать диаграммы DiagrammeR с помощью GraphViz. Если это невозможно, то почему литература DiagrammeR тратит столько времени на разговоры о GraphViz? Я имею в виду, он говорит: «Поддержка Graphviz является неотъемлемой частью пакета DiagrammeR». - Если это так, как они соединяются? – ollama

ответ

1

grViz берет строку, описывающую график (стиль vis.js): это интерпретируется vis.js. Его возвращаемое значение является объектом htmlwidget.

render_graph принимает объект dgr_graph, созданный с использованием функции create_graph.

вы можете увидеть in the DiagrammeR doc

library(DiagrammeR) 

# Create a simple NDF 
nodes <- 
    create_nodes(
    nodes = 1:4, 
    type = "number") 

# Create a simple EDF 
edges <- 
    create_edges(
    from = c(1, 1, 3, 1), 
    to = c(2, 3, 4, 4), 
    rel = "related") 

# Create the graph object, 
# incorporating the NDF and 
# the EDF, and, providing 
# some global attributes 
graph <- 
    create_graph(
    nodes_df = nodes, 
    edges_df = edges, 
    graph_attrs = "layout = neato", 
    node_attrs = "fontname = Helvetica", 
    edge_attrs = "color = gray20") 

# View the graph 
render_graph(graph) 

Diagrammer может производить GraphViz код: Из док указанных ниже: «Если вы хотите, чтобы вернуть код Graphviz DOT (чтобы, возможно, разделить его или использовать его непосредственно с Graphviz утилита командной строкой), просто использовать выход = "DOT" в render_graph()»

Так

  1. вы можете использовать create_graph для получения коды Graphviz точки
  2. вы можете использовать GraphViz коды точки непосредственно grViz в Diagrammer
+0

Хороший ответ, и чтобы убедиться, что это понятно, в 'DiagrammeR' нет функции, которая преобразует' DOT' в 'dgr_graph'. 'DiagrammeR' предназначен для того, чтобы пойти другим путем и сосредоточиться на том, чтобы помочь построить сеть и сделать вывод. – timelyportfolio

+0

Получил его, поэтому DOT/GraphViz используется в первую очередь для визуализации из DiagrammeR, но не для создания графика – ollama

 Смежные вопросы

  • Нет связанных вопросов^_^