繁体   English   中英

DiagrammeR在R中创建“错误”图

[英]DiagrammeR creates “wrong” diagram in R

我有用R中的图表库生成图表的代码。对于数据源,我使用xlsx文件,您可以在此链接下载

library("xlsx")
df <-xlsx::read.xlsx("animals.xlsx", sheetIndex = 1, header = TRUE, encoding = "UTF-8")

首先,我将文件导入R。然后使用col1col2创建图

uniquenodes <- unique(c(df$col1, df$col2))

library(DiagrammeR)

nodes <- create_nodes(nodes=seq(uniquenodes), type="number", label=uniquenodes)
edges <- create_edges(from=match(df$col1, uniquenodes), to=match(df$col2, uniquenodes), rel="related")
g <- create_graph(nodes_df=nodes, edges_df=edges)
render_graph(g)

使用代码后,我得到以下图片:

在此处输入图片说明

何时应如下所示:

在此处输入图片说明

简短答案

将数据导入代码更改为:

df <-xlsx::read.xlsx("animals.xlsx", 
                     sheetIndex = 1, 
                     header = TRUE, 
                     encoding = "UTF-8",
                     stringsAsFactors = FALSE)

详细说明

看来您的专栏实际上是因素,而不是字符。 我将在此处重新创建您的数据框(我不使用xlsx包,因为我太懒了,无法进行必要的系统更改来安装它)

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

uniquenodes
[1] 2 3 1

当列为要素时使用代码将获得所获得的图形。 如果列是字符串,您的代码将按需要工作。 注意这里的区别:

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

uniquenodes

library(DiagrammeR)


nodes <- create_nodes(nodes=seq(uniquenodes), type="number", label=uniquenodes)
edges <- create_edges(from=match(df$col1, uniquenodes), to=match(df$col2, uniquenodes), rel="related")
g <- create_graph(nodes_df=nodes, edges_df=edges)
render_graph(g)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM