我已经使用ggraph和igraph构建了树状图。
library(ggraph)
library(igraph)
EL <- read.csv("EL2.csv", sep=";",header=TRUE, stringsAsFactors = FALSE)
ELM <-as.matrix(EL)
mygraph <- graph_from_data_frame(ELM)
ggraph(mygraph, layout = 'dendrogram', circular = TRUE) +
geom_edge_diagonal() +
geom_node_point() +
theme_void()
但是,我需要节点和边的基础数据才能在Tableau中重新创建它。
我想使用ggplot_build,但这需要一个ggplot对象。为了创建该代码,我尝试使用ig2ggplot,但返回错误:
ig2ggplot(mygraph, dfOnly = FALSE, labels = FALSE, metab = TRUE)
layout.norm中的错误(g $ layout,xmax = 1,xmin = 0,ymin = 0,ymax = 1): “布局”不是矩阵
这是否意味着我必须将我的图形变成矩阵?因为情节看起来完全像我想要的样子。我只是想让基础数据保持滞后。对于将我的igraph变成ggplot的任何帮助,我们将不胜感激。
编辑:带有dput()的数据(对不起,以前没有使用过,所以我不知道它是否正确)
dput(EL) 结构(列表(来自= c(“印欧语系”,“阿尔巴尼亚语”,“ Gheg”, “阿尔巴尼亚语”,“托斯克”,“托斯克”,“托斯克”,“印欧语”,“亚美尼亚语”, “亚美尼亚语”,“印欧语”,“巴尔托斯拉夫语”,“波罗的海语”,“东部”, “东部”,“东部”,“东部”,“波罗的海”,“西部”,“巴尔托-斯拉夫” “斯拉夫语”,“东方”,“东方”,“东方”,“东方”,“斯拉夫语”,“南方”, “东南”,“东南”,“东南”,“南方”,“西南”, “西南”,“西南”,“西南”,“西南” “斯拉夫语”,“西方语”,“捷克斯洛伐克语”,“捷克斯洛伐克语”,“西方语”,“精神分裂症”, “ Lechitic”,“ Lechitic”,“ West”,“ Sorbian”,“ Sorbian”,“ Indo-European”, “凯尔特人”,“孤岛”,“ Brythonic”,“ Brythonic”,“ Brythonic”,“ Insular”, “ Goidelic”,“ Goidelic”,“ Goidelic”,“ Indo-European”,“ Germanic”, “北日耳曼语”,“东斯堪的纳维亚语”,“东斯堪的纳维亚语”,“丹麦-瑞典语”, “丹麦语-博克马尔语”,“丹麦语-瑞典语”,“丹麦语-里克斯马尔语”,“丹麦语-瑞典语”, “北日耳曼语”,“西北欧语”,“西北欧语”,“德语”, “西日耳曼语”,“英语”,“英语”,“西日耳曼语”,“弗里斯兰语”, “弗里斯兰语”,“弗里斯兰语”,“西日耳曼语”,“高级德语”,“德语”, “德语”,“中德”,“东德中”,“东德中” “东德德语”,“东德德语”,“中德德语”, “西中德”,“西中德”,“西中德” “西中德文”,“摩泽尔法兰克”,“德文”,“上德文”, “上德语”,“阿勒曼尼克”,“阿勒曼尼克”,“阿勒曼尼克”,“阿勒曼尼克”, “上德语”,“巴伐利亚奥地利”,“巴伐利亚奥地利”,“巴伐利亚奥地利”, “巴伐利亚奥地利”,“高级德语”,“仪德”,“仪德”,“西日耳曼” “低撒克逊人-低法兰克人”,“低法兰克人”,“低法兰克人”, “低法兰克”,“低法兰克”,“低法兰克”,“低萨克森-低法兰克” “低度撒克逊”,“低度撒克逊”,“低度撒克逊”,“低度撒克逊”,“低度撒克逊”, “低度撒克逊”,“低度撒克逊”,“低度撒克逊”,“低度撒克逊”,“低度撒克逊”, “低撒克逊人”,“印欧语”,“希腊语”,“阁楼”,“阁楼”,“阁楼”, “阁楼”,“阁楼”,“希腊语”,“多立克体”)到= c(“阿尔巴尼亚语”,“ Gheg”, “ Gheg Albanian”,“ Tosk”,“ Arbereshe Albanian”,“ Arvanitika Albanian”, “ Tosk阿尔巴尼亚语”,“亚美尼亚语”,“亚美尼亚语(语言)”,“西亚美尼亚语”, “巴尔托斯拉夫语”,“波罗的海语”,“东部”,“拉脱维亚语”,“标准拉脱维亚语”, “立陶宛语”,“萨莫吉特语”,“西方”,“普鲁士语”,“斯拉夫语”, “东部”,“白俄罗斯”,“俄罗斯”,“ Rusyn”,“乌克兰”,“南部”, “东南”,“保加利亚”,“马其顿”,“教会斯拉夫尼克”, “西南”,“波斯尼亚”,“克罗地亚”,“黑山”,“塞尔维亚”, “斯洛文尼亚”,“西部”,“捷克斯洛伐克”,“捷克”,“斯洛伐克”,“荔枝”, “ Kashubian”,“ Polish”,“ Silesian”,“ Sorbian”,“ Lower Sorbian”, “上索布族”,“凯尔特人”,“孤岛”,“ Brythonic”,“ Breton”, “康沃尔”,“威尔士”,“哥特式”,“爱尔兰”,“曼克斯”,“苏格兰盖尔”, “德语”,“北日耳曼语”,“东斯堪的纳维亚语”,“俄文版” “丹麦语-瑞典语”,“丹麦语-博克马尔语”,“挪威语”,“丹麦语-里克斯马尔语”, “丹麦语”,“瑞典语”,“西北欧语”,“法罗语”,“冰岛语”, “西日耳曼语”,“英语”,“英语(语言)”,“苏格兰语”,“弗里斯兰语”, “弗里斯兰语(语言)”,“北弗里斯兰语”,“萨特弗里斯兰语”,“高级德语”, “德语”,“洪斯克里克”,“中德”,“东德中”,“标准德”, “上撒克逊人”,“下西里西亚人”,“ Wymysory”,“西德中” “宾夕法尼亚州德语”,“普法尔茨法郎”,“里普里亚语”,“摩泽尔弗兰克语”, “卢森堡语”,“上德语”,“东法兰克语”,“阿勒曼语”, “ Colonia Tovar German”,“ Swiss German”,“ Swabian”,“ Walser”, “巴伐利亚奥地利”,“巴伐利亚”,“辛布里安”,“哈特里施”,“莫切诺”, “意第绪语”,“东部意第绪语”,“西方意第绪语”,“低撒克逊语-低法兰克语” “低法兰克语”,“南非语”,“荷兰语”,“林堡语”,“弗拉姆斯”, “ Zeeuws”,“ Low Saxon”,“ Achterhoeks”,“ Drents”,“ Gronings”,“ Plautdietsch”, “ Sallands”,“ East Frisian Low Saxon”,“ Low Saxon”,“ Stellingwerfs”, “特温特人”,“ Veluws”,“ Westphalien”,“希腊语”,“阁楼”,“ Cappadocian希腊语”, “希腊语(语言)”,“古希腊语”,“语音”,“ Yevanic”,“ Doric”, “ Tsakonian”)),类=“ data.frame”,row.names = c(NA,-136L))
答案 0 :(得分:0)
布局告诉igraph
每个节点的 x 和 y 位置在哪里。 ig2ggplot 要求将布局存储为图形属性。您将需要执行以下操作
mygraph <- igraph::graph_from_data_frame(ELM) #create a graph
mylayout <- igraph::layout_as_tree(mygraph, circular = T) #create a circular layout
mygraph$layout = mylayout #store layout as a graph attribute
#another gotcha is that ig2ggplot needs both vertex names and vertex labels.
#as of now you just have vertex names.
V(mygraph)$label = V(mygraph)$name #store label as a vertex attrbute
MetamapsDB::ig2ggplot(mygraph,
dfOnly = FALSE,
labels = FALSE,
metab = TRUE ) +
theme(legend.position = 'none')