Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R ggplot 2:为每列生成一个单独的方框图_R_Ggplot2 - Fatal编程技术网

R ggplot 2:为每列生成一个单独的方框图

R ggplot 2:为每列生成一个单独的方框图,r,ggplot2,R,Ggplot2,我正在尝试生成许多单独的图,每个图为每个细胞(=行)绘制一个单一基因(=列)的水平。在代码中,我还有两个“cell”子集,这取决于gene1的每个cell的值是否大于0(这是用dplyr处理的) 下面我尝试在一个单独的pdf绘图中绘制所有基因/列的值,一次。关于如何修改代码,使每个基因/列生成一个图,有什么建议吗 数据集: gene1 gene2 gene3 gene4 gene5 cell_1 0.0000 0.279204

我正在尝试生成许多单独的图,每个图为每个细胞(=行)绘制一个单一基因(=列)的水平。在代码中,我还有两个“cell”子集,这取决于gene1的每个cell的值是否大于0(这是用dplyr处理的)

下面我尝试在一个单独的pdf绘图中绘制所有基因/列的值,一次。关于如何修改代码,使每个基因/列生成一个图,有什么建议吗

数据集:

          gene1      gene2      gene3      gene4      gene5
cell_1   0.0000   0.279204  25.995400  46.171700  94.234100
cell_2   0.0000  23.456000  77.339800 194.241000 301.234000
cell_3   2.0000  13.100000  45.309200   0.776565   0.000000
cell_4   0.0000  10.500000 107.508000   3.032500   0.000000
cell_5   3.0000   0.000000   0.266139   0.762981 123.371000
代码:

库(ggplot2)
图书馆(dplyr)
图书馆(tidyr)
#循环生成多个单盒图
df3%as.data.frame%%>%变异(单元格=行名(.),正=df2$gene1>0)%%>%
聚集(,key=gene,value=“value”,-Cell,-positive)%>%
变异(绝对值=abs(值),logabs=log(绝对值+1))
对于(我是唯一的(df3$gene)){
基因图%ggplot(,aes(x=基因,y=对数绝对值,填充=阳性))+
geom_箱线图()+
xlab(“基因”)+ylab(“表达水平(TPM日志)”)+
经典主题(基本尺寸=14,基本系列=“Helvetica”)+
主题(axis.text.y=元素\文本(大小=14))+
主题(axis.title.y=元素\文本(大小=14,face=“bold”)+
主题(axis.text.x=元素\文本(大小=14))+
主题(axis.title.x=元素\文本(大小=14,face=“bold”)+
缩放填充酿酒器(调色板=“粘贴1”)
打印(基因图)
ggsave(sprintf(“%s.png”,df3$gene))
发展主任()
}

要避免这种情况,只需运行

df<-filter(df, value>0)

ggplot(data= df , aes(x=gene, y=logabs, fill=positive))+
  geom_boxplot()+facet_wrap(~ gene) 


谢谢!但是:如果我有大量的基因(我在sharp数据集中就是这么做的),这个解决方案就行不通了,因为每个箱线图都会变得很细,或者每个图都会变得很宽,因为每个图中没有显示的箱线图仍然有它们的空槽。。有办法解决这个问题吗?Scales=“free”?或者aes(x=1)最后两个选项就是我想要实现的!不幸的是,当我放入完整的数据集(包含大约1000个“基因”列)时,整个数据集不适合一个页面。我最后只看到了图表的“标题”部分。在ggplot中有没有办法将facet_包装拆分到不同的页面上,或者我需要返回到我的(不起作用的)for循环解决方案?实际上我现在已经解决了我的其他问题!我停止使用facet_wrap函数,而是加载ggplus包并使用facet_multiple函数。我添加了这行代码:facet_multiple(plot=p,facets='gene',ncol=4,nrow=4)@Cyrus Mohammadian,从我所读到的,我认为整个要点是能够打印多页PDF。因为我在一次运行中生成了大约1000-2500个图表,所以我无法将它们保存在一个页面上。
gene1<-c(0.0000, 0.0000, 2.0000, 0.0000, 3.0000)
gene2<-c(0.279204, 23.456000, 13.100000 , 10.500000, 3.0000)
gene3<-c(25.995400, 77.339800, 45.309200, 107.508000, 0.266139)
gene4<-c(46.171700, 194.241000, 0.776565, 3.032500, 0.762981)
gene5<-c(94.234100, 301.234000, 0.000000, 0.000000, 3.0000)
df<-data.frame(gene1, gene2, gene3,gene4,gene5)

df <- df %>% 
    as.data.frame %>% 
    mutate(Cell= rownames(.), positive = df$gene1>0) %>% 
    gather(., key= gene, value="value", -Cell,-positive) %>% 
    mutate( absolute= abs(value), logabs= log(absolute+1))

ggplot(data= df , aes(x=gene, y=logabs, fill=positive))+
    geom_boxplot()+facet_wrap(~ gene)
gene1<-c(0.0000, 0.0000, 2.0000, 0.0000, 3.0000)
gene2<-c(0.279204, 23.456000, 13.100000 , 10.500000, 3.0000)
gene3<-c(25.995400, 77.339800, 45.309200, 107.508000, 0.266139)
gene4<-c(46.171700, 194.241000, 0.776565, 3.032500, 0.762981)
gene5<-c(94.234100, 301.234000, 0.000000, 0.000000, 3.0000)
gene6<-c(0.0000, 0.0000, 0.0000, 0.0000, 0.0000)
df<-data.frame(gene1, gene2, gene3,gene4,gene5, gene6)

df <- df %>% 
  as.data.frame %>% 
  mutate(Cell= rownames(.), positive = df$gene1>0) %>% 
  gather(., key= gene, value="value", -Cell,-positive) %>% 
  mutate( absolute= abs(value), logabs= log(absolute+1))

ggplot(data= df , aes(x=gene, y=logabs, fill=positive))+
  geom_boxplot()+facet_wrap(~ gene) 
df<-filter(df, value>0)

ggplot(data= df , aes(x=gene, y=logabs, fill=positive))+
  geom_boxplot()+facet_wrap(~ gene) 
ggplot(data= df , aes(x=gene, y=logabs, fill=positive))+
    geom_boxplot()+facet_grid(~ gene, scales = "free")
ggplot(data= df , aes(x=gene, y=logabs, fill=positive))+
    geom_boxplot(aes(1))+facet_wrap(~ gene)