繁体   English   中英

R-组合冲积图

[英]R - Alluvial plots for combinations

我一直想知道如何使用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条柱将被未处理和已处理,并且连接将基于基因在治疗前后如何改变其值的比例。 绝对有可能做到这一点,而我似乎并没有掌握冲积积积概念。 任何帮助将不胜感激。

编辑:这是我制作的样例草图,情节看起来像

在此处输入图片说明

谢谢。

这似乎是你所追求的

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)

在此处输入图片说明

另外,您可以使用ggalluvial附带的包装easyalluvial

 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'))

易积积

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()

在此处输入图片说明

希望能帮助到你。

谢谢山姆

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM