使用riverplot画桑基图

#生成桑基图的边,N1存储源节点,N2存储目的节点,Value存储边的值

edges = data.frame(N1 = c("Direct","SEM","引荐","自然搜索","行业","提交量"),  

                   N2 = c(rep("行业",each=4),"提交量","托管量"),  
                   Value = c(28,32,18,40,60,40),  
                   stringsAsFactors = F)  
head(edges)  
library(riverplot)
#生成桑基图的点集(即edges出现过的所有点)
nodes = data.frame(ID = unique(c(edges$N1, edges$N2)), stringsAsFactors = FALSE)  
#节点所在桑基图的层级
nodes$x = c(1,1,1,1,2,3,4) 
#节点所在层的排列位置
nodes$y = c(0,1,2,3,2,2,2) 
rownames(nodes) = nodes$ID  
head(nodes)  

library(RColorBrewer)  

#添加颜色、文本格式等

palette = paste0(brewer.pal(6, "Greens"), "60")  
palette = brewer.pal(7, "Greens")  
styles = lapply(nodes$y, function(n) {  
  list(col = palette[n+1], lty = 0, textcol = "black",srt=0,nodestyle=point)  
})  
names(styles) = nodes$ID  
#生成riverplot对象
rp <- list(nodes = nodes, edges = edges, styles = styles)  
class(rp) <- c(class(rp), "riverplot") 

plot(rp)

结果如下:


想画桑基图,百度了很多帖子,自己找了一个代码跟着做和修改,终于成功了。。

新手小白弄了好久才成功,过程中出现蛮多错误。。并没有记录。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值