根据两列的最高值排序我的ggplot

时间:2017-02-13 19:25:47

标签: r ggplot2

我想根据两列的最高值(例如下面的M1和M2)在Rstudio上订购ggplot。在下面的示例中,正确的顺序是化学C,B,A,E,D。

Name    Parent  M1  M2 
Chemical A  0.088   0.237   0.310
Chemical B  0.004   0.315   0.238
Chemical C  0.026   0.387   0.285
Chemical D  0.015   0.235   0.272
Chemical E  0.086   0.288   0.272

我一直在使用的代码是:

  

ggplot(数据文件,aes(重新排序(x =名称,M1),M1))+ geom_point(aes(y =父级,颜色="黑色"))+ geom_point(aes(y = M1) ,color =" blue"))+ geom_point(aes(y = M2,color =" orange"))

此代码仅基于 M1 值成功订购我的数据,但我希望它基于 M1和M2 进行订购。 如何修改此代码才能实现?

谢谢!

1 个答案:

答案 0 :(得分:1)

假设你想要一个有序的情节而不用编辑底层的data.frame本身,你可以使用以下代码生成这样的情节:

ggplot(datafile[order(-pmax(datafile$M1, datafile$M2)),], aes (x=factor(Name, levels=Name), M1)) +  
  geom_point(aes (y= Parent), color = "black") + 
  geom_point(aes(y=M1), color = "blue") + 
  geom_point(aes(y=M2), color = "orange")

enter image description here

datafile[order(-pmax(datafile$M1, datafile$M2)),]提供您的data.frame,按M1和M2的最大值排序。

aes(factor(x=Name, levels=Name), M1)告诉R按照重新排序的数据文件的顺序绘制化学名称。