我想根据两列的最高值(例如下面的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 进行订购。 如何修改此代码才能实现?
谢谢!
答案 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")
datafile[order(-pmax(datafile$M1, datafile$M2)),]
提供您的data.frame,按M1和M2的最大值排序。
aes(factor(x=Name, levels=Name), M1)
告诉R按照重新排序的数据文件的顺序绘制化学名称。