R 桑基图

R 桑基图,r,visualization,flowchart,sankey-diagram,R,Visualization,Flowchart,Sankey Diagram,我看过这篇文章,想做一个SAnkey的情节,但理解起来太复杂了 如果有人能解释如何为如下数据帧绘制Sankey图 data.frame(row.names = paste0("SP","",1:30), COL1 = rep(sample(LETTERS[1:3]),10), COL3 = rep(sample(LETTERS[1:3]),10), COL3 = rep(sample(LETTERS[1:3]),10)

我看过这篇文章,想做一个SAnkey的情节,但理解起来太复杂了

如果有人能解释如何为如下数据帧绘制Sankey图

data.frame(row.names = paste0("SP","",1:30),
           COL1 = rep(sample(LETTERS[1:3]),10),
           COL3 = rep(sample(LETTERS[1:3]),10),
           COL3 = rep(sample(LETTERS[1:3]),10)
           )
因此,我可以将值可视化为3个条形代表列,3个线段代表3个因子A、B和C。

让我们试试:

# load some packages!
library(alluvial)
library(ggalluvial)
require(ggplot2)
library(reshape)

# put the seed, to have consistency in random sample
set.seed(1)
data <- data.frame(row.names = paste0("SP","",1:30),
           id = paste0("SP","",1:30),              # added the rowlabels as id
           COL1 = rep(sample(LETTERS[1:3]),10),
           COL2 = rep(sample(LETTERS[1:3]),10),    # rename a column
           COL3 =rep(sample(LETTERS[1:3]),10))


# put data in long format, for ggplot
mdata <- melt(data, id=c("id")) 


# here the sankey, if it's like you want it
ggplot(mdata,aes(x = variable, stratum = value, alluvium = id, fill = value, label = value))+
  geom_flow(stat = "alluvium", lode.guidance = "rightleft") +
  geom_stratum() + geom_text(stat = "stratum")+
  theme(legend.position = "none") +
  ggtitle("test")
这里是结果


你能详细说明你想要的输出吗?@TheBiro I was data.frame,其中每行名称来自一个样本,每列中的值是对不同分类器的预测,在同一样本上假设3种可能的结果。我想显示每一列的每个结果的比例,以及它们与其他列的结果的连接。它应该像tabledata.frame$COL1,data.frame$COL2一样,但在视觉方式和方向上非常棒!