2017-02-13 59 views
0

我想根據兩列的最高值(例如下面的M1和M2)在Rstudio上訂購一個ggplot。在下面的例子中,以正確的順序將是化學C,B,A,E,D。根據兩列的最高值排序我的ggplot

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 = Name,M1),M1))+ geom_point(aes(y = Parent,color =「black」))+ geom_point(aes(y = M1,color =「blue」))+ geom_point(aes(y = M2 ,顏色=「橙」))

此代碼基於成功只值上M1的訂單我的數據,但我想它根據M1和M2來訂購。 如何修改此代碼以實現該目標?

謝謝!

+0

用'reorder(x = Name,pmax(M1,M2))'替換'reorder(x = Name,M1)'''。 – Gregor

回答

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按照重排序數據文件的結果顯示化學名稱的順序。

+2

我認爲OP要按每種化學品的最大(M1,M2)排序。這可以通過'pmax(datafile $ M1,datafile $ M2)'完成。 – bdemarest

+0

@bdemarest啊,這更合理,謝謝。我已經編輯了答案來反映這一點。 –