[英]R Riverplot remove node labels on one side of Sankey plot
我正在使用 Riverplot 创建 Sankey 图并将它们放在一个 plot 中,以创建具有三个图的连续外观。 我的问题是我只想要最外面的左右节点上的节点标签,而不是里面。
我已经设法使用以下代码从中间 plot 中删除标签来创建对象,但我想知道是否有办法只删除标签的一侧。 我已经尝试创建空白节点标签,但是当我完成此操作时,plot 的两侧都会被删除。
make_rp = function(edges) {
nodes = data.frame(ID=unique(c(edges$N1, edges$N2)),
x=rep(c(1,2), each=9))
style = sapply(nodes$ID, function(id)
list(col=cols[gsub('( |) ', '', id)]),
simplify=FALSE)
rp = makeRiver(nodes, edges, styles=style)
}
make_rp_inner = function(edges) {
nodes = data.frame(ID=unique(c(edges$N1, edges$N2)),
x=rep(c(1,2), each=9))
style = sapply(nodes$ID, function(id)
list(col=cols[gsub('( |) ', '', id)]),
simplify=FALSE)
rp = makeRiver(nodes, edges, styles=style, node_labels=c('','','','','','','','',''))
}
这是我的绘图代码:
par(mar=c(0,0,0,0), mfrow=c(1,3), cex=1.2)
riverplot(rp_90_00,srt=0, plot_area=c(1,.7), gravity='top',
nodewidth=1.2, node_margin=0.2, fix.pdf=TRUE)
riverplot(rp_00_10,srt=0, plot_area=c(1,.7), gravity='top',
nodewidth=1, node_margin=0.2, fix.pdf=TRUE) # uses rp_innner function
riverplot(rp_10_20,srt=0, plot_area=c(1,.7), gravity='top',
nodewidth=1.4, node_margin=0.2, fix.pdf=TRUE)
这是我目前拥有的 plot,我希望除去外面的所有标签。 我担心如何设置 Riverplot package 可能是不可能的,但我们将不胜感激。
尽管涉及大量手动输入,但我找到了解决此问题的方法。 我最终不得不删除所有节点标签。 主要思想是 node_labels 本质上是 null,但不能简单地将其定义为 =NULL。 以下代码是我所做的简化版本:
plot_n = makeRiver(nodes=nodes, edges=edges, styles=style,
node_labels=c('','','','','','','','',''))
然后我手动将标签添加到 plot。
par(mfrow=c(1,3))
riverplot(plot_1)
text("LDW", x = 0.04, y = .88)
text("MDW", x = 0.04, y = .72)
text("LDL", x = 0.04, y = .615)
text("MDL", x = 0.04, y = .523)
text("LDB", x = 0.04, y = .425)
text("MDB", x = 0.04, y = .33)
text("LDA", x = 0.04, y = .235)
text("MDA", x = 0.04, y = .15)
text("HD", x = 0.03, y = .06)
riverplot(plot_2)
riverplot(plot_3)
text("LDW", x = .96, y = .915)
text("MDW", x = 0.96, y = .762)
text("LDL", x = 0.96, y = .64)
text("MDL", x = 0.96, y = .54)
text("LDB", x = 0.96, y = .44)
text("MDB", x = 0.96, y = .341)
text("LDA", x = 0.96, y = .246)
text("MDA", x = 0.96, y = .155)
text("HD", x = 0.98, y = .063)
我注意到 pdf 与 png、jpeg 等格式的结果不同,但是一旦弄清楚了一般要点,调整就相当容易了。 我希望这可以帮助任何有类似问题的人,直到发现或实施更好的解决方案。 下图是我的问题中的固定版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.