首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R-组合冲积图

R-组合冲积图
EN

Stack Overflow用户
提问于 2018-08-24 02:05:30
回答 3查看 763关注 0票数 2

我一直想知道如何使用R中的数据框生成冲积图(例如,使用ggalluvial包)。

我有一个如下所示的数据框架

代码语言:javascript
复制
   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个条形图将不处理和处理,连接将基于基因在处理前后如何改变其值的比例。这应该是绝对有可能做到的,而我似乎没有掌握冲积情节的概念。任何帮助都将不胜感激。

编辑:这是我制作的一个样例草图,看起来是什么样子

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-08-24 02:46:54

这似乎就是你要找的东西

代码语言:javascript
复制
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)

票数 2
EN

Stack Overflow用户

发布于 2019-01-04 16:35:17

或者,您可以使用easyalluvial附带的ggalluvial包装器

代码语言:javascript
复制
 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'))

票数 2
EN

Stack Overflow用户

发布于 2018-10-18 09:23:37

MrFlick的回答非常好。另一种选择是使用冲积物地块,这在"https://github.com/topepo/caret/issues/755“中已经讨论过。

代码语言:javascript
复制
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()

希望能有所帮助。

谢谢,山姆

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51991825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档