2016-03-01 258 views
-1

我想用ggplot顯示這個矩陣以獲得線條: 例如:在X中從1到12的部分,並且在其中是具有不同顏色的5個線(類別),並且它們的相應的值。 實例第一點x = 1和Y = 12.25在綠色用ggplot繪製矩陣

DF <- read.table(text = " 
       Portion   1   2  3   4   5 
    1     1 12.250000 0.9423077 33.92308 0.0000000 1.8846154 
    2     2 6.236364 1.7818182 38.30909 0.8909091 1.7818182 
    3     3 9.333333 1.8666667 28.00000 0.0000000 2.8000000 
    4     4 9.454545 2.8363636 34.03636 4.7272727 0.9454545 
    5     5 27.818182 0.0000000 19.47273 2.7818182 0.9272727 
    6     6 19.771930 2.5789474 19.77193 0.8596491 6.0175439 
    7     7 22.350877 1.7192982 22.35088 0.8596491 1.7192982 
    8     8 17.769231 4.0384615 15.34615 0.8076923 4.0384615 
    9     9 16.925373 8.8656716 23.37313 2.4179104 2.4179104 
    10    10 10.036364 8.3636364 25.09091 0.8363636 1.6727273 
    11    11 8.937500 8.9375000 8.12500 0.0000000 0.0000000 
    12    12 12.157895 5.2105263 14.76316 0.8684211 0.0000000", header = TRUE) 
     newResults <- as.data.frame(DF) 

    library(reshape2) 
    R = data.frame(Portion = c('1','2','3','4','5','6','7','8','9','10','11','12'), newResults[,1], newResults[,2], newResults[,3], newResults[,4], newResults[,5]) 
    meltR = melt(R, id = "Portion") 
    ggplot(meltR, aes(reorder(Portion, -value), y = value, group = variable, colour = variable)) + geom_line(). 

紅色 二點x = 2,Y = 0.9423爲什麼我的X值是沒有順序?這是否是最健康的方式?

非常感謝。

+1

下面的答案當然是一個'更健康'的方式來做到這一點..但在你的具體問題。值得注意的是,c('1','2','3','4','5','6','7','8','9','10 ','11','12')'不是你所期望的,因爲它不是'數字',而是'字符',因此以字母數字順序排列。 –

回答

2

嘗試:

meltR = melt(DF, id = "Portion") 
ggplot(meltR, aes(x=Portion, y = value, group = variable, colour = variable)) + geom_line() 

在這種情況下,沒有必要在審美reorder何事ggplot。這會給你如下圖:

enter image description here

你可能想,無論是在第一步中重命名他們改變變量的名稱,或提供自定義標籤來ggplot