避免ggplot更改列的顺序

时间:2019-07-12 12:58:21

标签: r

可能是一个愚蠢的问题。 我有一个data.frame看起来像:

         Sample3  Sample1  Sample4   Sample5   Sample10
Gene1      6.90    6.45     6.56       3.4       2.0
Gene2      3.4     4.98     0.12       1.5       0.56
Gene3      3.24     0       0.12       0.56      0.22
          .....................

还有另一个data.frame(Sample_ann),如下所示:

Sample   Batch
Sample3  A
Sample1  A
Sample4  B
Sample5  C
Sample10 C
...      ...

我想绘制每批Boxplots着色样品的图。 关键是ggplot对样本进行重新排序,但我想保持原样。

此处是代码:

      mydf_reorder %>%                 
      rownames_to_column("Genes") %>%                                      
      gather(Sample, Sample_value, -Genes) %>%                                        
      left_join(Samples_ann, by = "Sample") %>%                                              
      ggplot(aes(x=Sample, y=Sample_value, color=Batch)) +                                   
      geom_boxplot()                 

我尝试添加+ geom_bar(stat =“ identity”),但顺序仍然更改。

有人可以帮我吗?

提前谢谢

1 个答案:

答案 0 :(得分:-1)

您需要更改变量中因子的顺序,例如更改虹膜数据集中因子顺序的示例:

ggplot(iris,aes(Species))+geom_bar()
levels(iris$Species)# "setosa"     "versicolor" "virginica" 
iris$Species = factor(iris$Species, levels = c(levels(iris$Species[3],levels(iris$Species)[2],levels(iris$Species)[1]))
levels(iris$Species) # "virginica"  "versicolor" "setosa" 
ggplot(iris,aes(Species))+geom_bar()