很多时候,我们会有绘制非等高桑基图的需求。
本来我这个文章写了一次了,结果服务器出问题提交失败了。所以没耐心再写一次。
我就直接贴代码说明一下代码吧。
library(ggalluvial)
library(ggplot2)
td <- data.frame(name=c('1','2','3','4','5','4'),
group=c('1','1','2','2','1', '2'),
connect = c(1,2,1,2,3,3),
value=c(1,1,1,10, 2,2))
ggplot(td,aes(x = group, stratum = name,
alluvium = connect, y = value, label=name,fill=name)) +
geom_lode() + geom_flow() +
geom_stratum(alpha = 0) +geom_text(stat = "stratum", nudge_x = 0.2)
ggplot参数说明
注意,请观察我数据的最后三行,如果说希望绘制出我这个类似的图形,既左边有多条边指向右边同一个矩形,这需要同时写左边输出的大小和右边输入的大小。
参数 | 功能 |
---|---|
x | 桑基图有几条柱子,每条柱子需要一个名称去区分, 例如上述例子中有两个柱子,分别为1和2,也就是X轴的名字 |
stratum | 每一个柱子中矩形的名字,例如上述例子中,左侧柱子上有名为1,2,5的矩形,右侧有名为3,4的矩形 |
alluvium | 柱子之间的流量关系,这个参数是看起来最反人类的,他的解释是这样的:例如我的表格中矩形2和矩形5都与矩形4有连接,这个连接关系就是alluvium控制的,如果说两个矩形之间有连接例如矩形2和矩形4有连接那么在上述例子中alluvium就都是2,也就是2号连接,同样的矩形5和矩形4之间alluvium都是3,表示3号连接。简单地说,就是有连接的块这个地方的数值是同一个值。 |
y | 流量大小,上述参数确定了连接关系,那么这里就是为什么能画非等高的关键,就是确定连接的前后的y轴高度 |
label,fill | 就是显示的文字和填充的颜色 |
关键就是alluvium必须是成对的,这个再强调一下
全部评论