我正在尝试创建制图仪图形的图像,但它创建的是空白文件。我的数据框:
df <- data.frame(col1 = c( "Cat", "Dog", "Bird"),
col2 = c( "Feline", "Canis", "Avis"),
stringsAsFactors=FALSE)
其余代码:
png("C:\\tmp\\anim.png")
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)
dev.off()
Run Code Online (Sandbox Code Playgroud)
Ser*_*gey 15
这个解决方案是形成这个线程。
library(DiagrammeR)
library(DiagrammeRsvg)
library(magrittr)
library(rsvg)
graph <-
"graph {
rankdir=LR; // Left to Right, instead of Top to Bottom
a -- { b c d };
b -- { c e };
c -- { e f };
d -- { f g };
e -- h;
f -- { h i j g };
g -- k;
h -- { o l };
i -- { l m j };
j -- { m n k };
k -- { n r };
l -- { o m };
m -- { o p n };
n -- { q r };
o -- { s p };
p -- { s t q };
q -- { t r };
r -- t;
s -- z;
t -- z;
}
"
grViz(graph) %>%
export_svg %>% charToRaw %>% rsvg_pdf("graph.pdf")
grViz(graph) %>%
export_svg %>% charToRaw %>% rsvg_png("graph.png")
grViz(graph) %>%
export_svg %>% charToRaw %>% rsvg_svg("graph.svg")
Run Code Online (Sandbox Code Playgroud)
小智 9
如果您想导出到 svg 而不首先渲染图像。
require(magrittr)
require(DiagrammeR)
require(DiagrammeRsvg)
require(xml2)
graphobject %>%
export_svg() %>%
read_xml() %>%
write_xml("graph.svg")
Run Code Online (Sandbox Code Playgroud)
不首先渲染图像的优点是 svg 文件更干净、更小、更清晰。可以使用以下方式优化和美化代码:https ://jakearchibald.github.io/svgomg/
首先安装DiagrammeRsvg并rsvg打包。在代码末尾添加以下行:
export_graph(graph_name,
file_name = "pic.png",
file_type = "png")
Run Code Online (Sandbox Code Playgroud)
有了这个,您不仅可以创建png图像,pdf还可以创建图像。