我在ggplot上有点想做一个人物。
所以我有一个长度为21685的数据帧
这是我的数据的一个小例子
x <- data.frame("Genes" = c("Gene_1","Gene_2","Gene_3","Gene_4","Gene_5",
"Gene_6","Gene_2","Gene_8","Gene_4","Gene_10"),
"Start" = c(1,1,50,400,400,500,700,700,2000,2000),
"End" = c(10,10,200,600,600,600,1000,1000,3000,3000),
"Log2_FC"=c(-1.2,-1.2,-0.7,-0.1,-0.1,0.3,1,1,1.5,1.5),
"TPM"=c(0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1))
(x只是我以df命名的原始数据框的一部分)
一个相关基因(相同的坐标可以具有多个基因,而不同的坐标可以具有已经与给定位置相关的基因)
每个坐标的唯一Log2(FC)值
每个坐标/每个基因的唯一TPM值(代表与该坐标相关的给定基因的活性)
我按“ Log2_FC”对数据进行了排序。
所以我想做的是按1000组绘制数据。 为此,我在数据框中添加了另一列
df$TPM_range_1000=
rep(seq(1000, 22000, by=1000), each=1000, length.out=21685)
df$TPM_range_1000<-as.factor(df$TPM_range_1000)
然后塑造我的身材:
(fig1<-ggplot(df, aes(x=TPM_range_1000,y=TPM))+
geom_violin(scale = "width",adjust = .5,fill='#A4A4A4', color="darkred")+
geom_boxplot(width=0.1) + theme_minimal()+
stat_summary(fun.y=mean, geom="point",size=2,color="red",aes(shape="Mean")) +
theme(axis.text.x = element_text(angle = 90, hjust = 1))+
guides(colour=guide_legend(order=1), shape=guide_legend(title=NULL, order=2)))
我有类似的东西:
所以在这里,我有几个问题... 第一个是所有组= 1000,最后一个= 685。 我怎样才能通过给定组的长度更改x标签。因为这里的最后一组等于685,但是对于其他数据,它可以不同。
另一件事是如何在相同的坐标上合并并保存不同的TPM。因为实际上我的数据帧应该更短,但是我不想在TPM列中丢失信息,因为我需要在此处绘制值。
因此,如果有人至少可以帮助我解决我的一个问题,那就太好了。 谢谢您阅读本文,这很棘手,不容易解释,但是我尽力了:)。
最佳,
答案 0 :(得分:0)
我找到了至少一个解决方案。如果有人需要答案,我会发布答案。您也可以对我的解决方案发表看法。
因此,我根据应为唯一的“开始”,“结束”,“ Log2_FC”删除重复项。 而且因为我只想每个坐标保留一个值,所以我为具有多个TPM的坐标计算TPM的平均值。
#Here I drop duplicates and compute mean for coordinates which have several TPM
test =as.data.frame( df %>% group_by(start,end,Log_FC) %>% summarise(TPM=mean(TPM)))
#I order by Log_FC value
test=test[order(test$Log_FC),]
#them make group of 500. So first 500 coordinates will have lowest Log2_FC value
test$TPM_range_500=rep(seq(500, 15000, by=500), each=500,length.out=length(test[,1]))
#To be plot as a factor
test$TPM_range_500<-as.factor(test$TPM_range_500)
所以我得到了这张图:
但是我仍然无法表示我的数据。
我的数据帧长度等于14470。所以数据:
但是这里的问题是最后一组比另一组短。所以我想至少更改最后一个x标签以替换组的长度。
感谢您的帮助...