首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的河岸看起来这么奇怪?

为什么我的河岸看起来这么奇怪?
EN

Stack Overflow用户
提问于 2017-09-20 10:33:10
回答 1查看 413关注 0票数 0

我试图生成一个河图,但是我的输出看起来好像是从每个条形图的错误的侧面来的,这使得它很难解释。

我使用的数据是:

边缘:

代码语言:javascript
复制
       N1       N2      Value
1     off    off.1 0.77149877
2    weak    off.1 0.47474747
3  medium    off.1 0.17537313
4  strong    off.1 0.03603604
5     off    low.1 0.06879607
6    weak    low.1 0.26262626
7  medium    low.1 0.13432836
8  strong    low.1 0.01351351
9     off medium.1 0.12530713
10   weak medium.1 0.23232323
11 medium medium.1 0.54850746
12 strong medium.1 0.20720721
13    off strong.1 0.03439803
14   weak strong.1 0.03030303
15 medium strong.1 0.14179104
16 strong strong.1 0.74324324

节点:

代码语言:javascript
复制
        ID x y
1      off 1 4
2     weak 1 3
3   medium 1 2
4   strong 1 1
5    off.1 2 4
6    low.1 2 3
7 medium.1 2 2
8 strong.1 2 1

情节的代码是:

代码语言:javascript
复制
library(RColorBrewer)
library(riverplot)
palette = paste0(brewer.pal(5, "Set2"), "60")
styles = lapply(nodes$y, function(n) {
  list(col = palette[n+1], lty = 0, textcol = "black")
})
names(styles) = nodes$ID
nlabels <- c(off = 'off', weak = 'weak', medium = 'medium',strong = 'strong', 
             off.1 = 'off', weak.1 = 'weak', medium.1 = 'medium', strong.1 = 'strong')
x <- makeRiver(nodes, edges, node_styles = styles, node_labels = nlabels)
plot(x)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-20 16:09:51

可以解决这个问题,指定地块上节点的垂直位置(nodes_ypos选项):

代码语言:javascript
复制
x <- makeRiver(nodes, edges, node_styles = styles, node_labels = nlabels,
               node_ypos=1:4)
plot(x)

使用sankeyNetwork函数的networkD3,您可以得到一个类似的(交互式)图:

代码语言:javascript
复制
edges <- read.table(text="
n       N1       N2      Value
1     off    off.1 0.77149877
2    weak    off.1 0.47474747
3  medium    off.1 0.17537313
4  strong    off.1 0.03603604
5     off    low.1 0.06879607
6    weak    low.1 0.26262626
7  medium    low.1 0.13432836
8  strong    low.1 0.01351351
9     off medium.1 0.12530713
10   weak medium.1 0.23232323
11 medium medium.1 0.54850746
12 strong medium.1 0.20720721
13    off strong.1 0.03439803
14   weak strong.1 0.03030303
15 medium strong.1 0.14179104
16 strong strong.1 0.74324324
", header=T)

nodes <- read.table(text="
n        ID x y
1      off 1 4
2     weak 1 3
3   medium 1 2
4   strong 1 1
5    off.1 2 4
6    low.1 2 3
7 medium.1 2 2
8 strong.1 2 1
", header=T)

nodes$ID <- as.character(nodes$ID)
edges$N1 <- as.numeric(factor(edges$N1, levels=c("off","weak","medium","strong")))-1
edges$N2 <- as.numeric(factor(edges$N2, levels=c("off.1","low.1","medium.1","strong.1")))+3

library(networkD3)
sankeyNetwork(Links = edges, Nodes = nodes, Source = "N1",
             Target = "N2", Value = "Value", NodeID = "ID",
             iterations=0,
             units = "", fontSize = 12, nodeWidth = 30)

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

https://stackoverflow.com/questions/46319735

复制
相关文章

相似问题

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