我一直想知道如何使用R中的数据框生成冲积图(例如,使用ggalluvial包)。
我有一个如下所示的数据框架
GENE UNTREATED TREATED
1 G1 FOUR FOUR
2 G2 FOUR FOUR
3 G3 FOUR FOUR
4 G4 FOUR THREE
5 G5 THREE NONE
6 G6 THREE NONE
7 G7 TWO THREE
8 G8 TWO ONE
9 G9 ONE ONE
10 G10 TWO ONE我想用这些数据生成一个冲积图。例如,图中的2个条形图将不处理和处理,连接将基于基因在处理前后如何改变其值的比例。这应该是绝对有可能做到的,而我似乎没有掌握冲积情节的概念。任何帮助都将不胜感激。
编辑:这是我制作的一个样例草图,看起来是什么样子

谢谢。
发布于 2018-08-24 02:46:54
这似乎就是你要找的东西
dd<-read.table(text=" GENE UNTREATED TREATED
1 G1 FOUR FOUR
2 G2 FOUR FOUR
3 G3 FOUR FOUR
4 G4 FOUR THREE
5 G5 THREE NONE
6 G6 THREE NONE
7 G7 TWO THREE
8 G8 TWO ONE
9 G9 ONE ONE
10 G10 TWO ONE", header=TRUE)
ggplot(dd, aes(axis1=UNTREATED, axis2=TREATED)) +
geom_alluvium() +
geom_stratum(width = 1/12, fill = "black", color = "grey") +
geom_label(stat = "stratum", label.strata = TRUE)

发布于 2019-01-04 16:35:17
或者,您可以使用easyalluvial附带的ggalluvial包装器
dd<-read.table(text=" GENE UNTREATED TREATED
1 G1 FOUR FOUR
2 G2 FOUR FOUR
3 G3 FOUR FOUR
4 G4 FOUR THREE
5 G5 THREE NONE
6 G6 THREE NONE
7 G7 TWO THREE
8 G8 TWO ONE
9 G9 ONE ONE
10 G10 TWO ONE", header=TRUE)
easyalluvial::alluvial_wide( dd, id = GENE, fill_by = 'all_flows',
order_levels = c('NONE','FOUR', 'THREE', 'TWO', 'ONE'))

发布于 2018-10-18 09:23:37
MrFlick的回答非常好。另一种选择是使用冲积物地块,这在"https://github.com/topepo/caret/issues/755“中已经讨论过。
library(alluvial)
plotCM <- function(cm){
cmdf <- as.data.frame(cm[["table"]])
cmdf[["color"]] <- ifelse(cmdf[[1]] == cmdf[[2]], "green", "red")
alluvial::alluvial(cmdf[,1:2]
, freq = cmdf$Freq
, col = cmdf[["color"]]
, alpha = 0.5
, hide = cmdf$Freq == 0
)
}
dd<-read.table(text=" GENE UNTREATED TREATED
1 G1 FOUR FOUR
2 G2 FOUR FOUR
3 G3 FOUR FOUR
4 G4 FOUR THREE
5 G5 THREE NONE
6 G6 THREE NONE
7 G7 TWO THREE
8 G8 TWO ONE
9 G9 ONE ONE
10 G10 TWO ONE", header=TRUE)
labels=unique(dd$UNTREATED)
d1 <- factor(dd$UNTREATED,labels=labels)
d2 <- factor(dd$TREATED,labels=labels)
confusionMatrix(d1,d2) %>% plotCM()

希望能有所帮助。
谢谢,山姆
https://stackoverflow.com/questions/51991825
复制相似问题