我的代码用R中的图表库生成图表。对于数据源,我使用xlsx文件,您可以在此link下载
library("xlsx")
df <-xlsx::read.xlsx("animals.xlsx", sheetIndex = 1, header = TRUE, encoding = "UTF-8")
使用第一行我将文件导入R.然后使用col1
和col2
创建图表
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)
使用代码后,我得到了这张照片:
什么时候看起来像这样:
答案 0 :(得分:1)
将您的数据导入代码更改为:
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)