首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ggplot或任何其他绘图包中创建区块链图

在ggplot或任何其他绘图包中创建区块链图
EN

Stack Overflow用户
提问于 2018-12-25 12:00:46
回答 1查看 68关注 0票数 1

考虑下面的data.frame

代码语言:javascript
复制
POP1    POP2    FST
ES13-15 ES16-18   0.0109
ES19-21 SA7-9     0.0587
SA7-9   SA13-15   0.0287
ES10-12 ES37-38   0.0816
ES34-36 ES37-38   0.0205
ES28-30 ES37-38   0.0425
ES22-24 ES25-27   0.0108
ES19-21 SA22-25   0.0940
ES6-8   ES13-15   0.0081
ES1-3   ES7-9     0.0418
ES7-9   ES16-18   0.0224
ES19-21 ES37-38   0.0894
ES1-3   ES34-36   0.0874
ES19-21 ES25-27   0.0320
ES19-21 SA19-21   0.1184
SA7-9   SA16-18   0.0361
ES13-15 SA19-21   0.0852
ES22-24 SA7-9     0.0193
ES28-30 SA7-9     0.0335
ES4-6   ES34-36   0.0794

下面是它的dput

代码语言:javascript
复制
structure(list(POP1 = c("ES1-3", "SA4-6", "ES31-33", "ES1-3", 
"ES34-36", "SA1-3", "ES6-8", "ES7-9", "ES25-27", "ES7-9", "SA10-12", 
"ES1-3", "ES10-12", "ES10-12", "ES22-24", "ES10-12", "ES37-38", 
"ES34-36", "ES4-6", "ES16-18"), POP2 = c("ES10-12", "SA16-18", 
"ES37-38", "SA13-15", "ES37-38", "SA16-18", "ES34-36", "ES10-12", 
"SA1-3", "SA22-25", "SA16-18", "ES6-8", "SA13-15", "SA22-25", 
"SA13-15", "ES31-33", "SA10-12", "SA4-6", "ES22-24", "SA13-15"
), FST = c(0.0123, 0.0531, 0.039, 0.0744, 0.0205, 0.0831, 0.0678, 
0.0257, 0.045, 0.0635, 0.0138, 0.0193, 0.0782, 0.0726, 0.0522, 
0.0612, 0.0719, 0.0624, 0.0255, 0.0819)), row.names = c(4L, 214L, 
178L, 18L, 187L, 208L, 51L, 61L, 158L, 78L, 223L, 2L, 92L, 95L, 
150L, 85L, 199L, 189L, 28L, 123L), class = "data.frame")

我想生成一个包含列POP1和POP2的图,并生成一个像这样的区块链图:

其中每个块以行的方式表示我的data.frame的成对关系。例如,第一行ES13-15将是与ES16-18链接的画面中的块。如果可以站在连接这些块的行的顶部,那么FST的价值将会很大。在前一种情况下,值0.0109将高于链接上述块的线。

一些代码来派生代码块也会很受欢迎。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-25 12:52:05

你可以尝试一下'igraph‘包:

代码语言:javascript
复制
Using your `dput()` output, which is different from data.frame you have shared.

library(igraph)
df = structure(list(POP1 = c("ES1-3", "SA4-6", "ES31-33", "ES1-3", 
"ES34-36", "SA1-3", "ES6-8", "ES7-9", "ES25-27", "ES7-9", "SA10-12", 
"ES1-3", "ES10-12", "ES10-12", "ES22-24", "ES10-12", "ES37-38", 
"ES34-36", "ES4-6", "ES16-18"), POP2 = c("ES10-12", "SA16-18", 
"ES37-38", "SA13-15", "ES37-38", "SA16-18", "ES34-36", "ES10-12", 
"SA1-3", "SA22-25", "SA16-18", "ES6-8", "SA13-15", "SA22-25", 
"SA13-15", "ES31-33", "SA10-12", "SA4-6", "ES22-24", "SA13-15"
), FST = c(0.0123, 0.0531, 0.039, 0.0744, 0.0205, 0.0831, 0.0678, 
0.0257, 0.045, 0.0635, 0.0138, 0.0193, 0.0782, 0.0726, 0.0522, 
0.0612, 0.0719, 0.0624, 0.0255, 0.0819)), row.names = c(4L, 214L, 
178L, 18L, 187L, 208L, 51L, 61L, 158L, 78L, 223L, 2L, 92L, 95L, 
150L, 85L, 199L, 189L, 28L, 123L), class = "data.frame")

g<-graph_from_data_frame(d = df[,c(1,2)],directed = TRUE)
plot(g,edge.arrow.size=0.1,vertex.shape="rectangle")

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53919247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档