2013-02-19 57 views
0

我有兩個數據集,d1d2在csv文件中。每個數據有6列。我設法通過melt命令將它們組合在一起,並將它們一起繪製在ggplot中。在添加了一個額外的列,這是圖形將依賴的另一個變量後,我無法獲得所需的圖形。提供了數據集樣本和我的代碼。基於許多變量的R中的ggplot圖

數據集使用meltreshape包後

initi A B  C  D E L1 
0.005 1 23.7  1.0 1.0 24.7 d2 
0.005 2 31.2  2.0 2.1 31.2 d2 
0.005 3 35.8  3.1 3.2 35.6 d2 
1 1 6.2  1.0 1.0 6.2 d1 
1 2 10.1  2.0 2.1 7.0 d1 
1 3 11.2  3.0 3.5 7.0 d1 
2 1 14.2  8.0 14.3 5.2 d1 
2 2 15.9  7.0 13.0 5.5 d1 
2 3 16.0  6.2 12.4 5.8 d1 

我需要在Y-axis的​​和B曲線圖Ainiti值將代表每個圖形。換句話說,它將在傳說中。對於d1,我需要繪製AB之間的結果。對於d2我想繪製兩張圖,其中第一張圖爲initi = 1,第二張圖爲initi = 2d1d2的所有圖形均在AB之間,並以圖形形式組合在一起。在這種情況下總共3行合併成一張圖。 我在添加initi列之前設法繪製了d1d2。現在我掙扎着。以下是我的代碼:

dlist <- list(d1 =data1 ,d2 = data2) 
reshaped_data <- melt(dlist, id.vars = c('initi','A','B','C','D','E')) 
graph_AB<-ggplot(reshaped_data,aes(x = A, y = B, colour = initi)) + 
    geom_point(size = 5)+ 
    geom_line() + 
    ggtitle("DATA1 vs DATA2") 

上面的代碼是接近我想要的...除了行以奇怪的方式連接。我應該將每個模式的「啓動」都看作一條線。加上圖例並沒有顯示'啓動'的每個值

+0

我不太確定這是你想要的。所以,我會在這裏寫下評論,看它是否在我寫作答案之前:這是否工作? 'ggplot(data = df,aes(x = A,y = B,color = factor(initiate)))+ geom_point()+ geom_line()+ facet_grid(。〜L1)' – Arun 2013-02-19 19:40:09

+0

是的,它做了一些與我想要的東西接近的東西。它接下來產生了兩張圖。對於d1,它只生成一個只有d1結果的圖(A VS B)。在圖2中,d2的結果是!!!?。兩個圖下一個標題和一個傳說?我想結合他們? – SimpleNEasy 2013-02-19 19:50:30

+0

對不起,我不太關注......請你再解釋一下(通過編輯你的帖子你想要的情節)? – Arun 2013-02-19 19:52:18

回答

0

你說你想要兩個圖表,一個是當initi是1,另一個是它的時候是2,但它也取值0.005。如果您想省略0.005級別,則需要先將數據分組。

在ggplot2中,多個圖形被稱爲「構面」,並且由於您的構面依賴於一個變量,所以您需要的命令是facet_wrap()。 (你會使用facet_grid如果你的面取決於兩個變量。)刻面應該是對的因素,所以我們將確保initi是一個因素

reshaped_data$initi <- factor(reshaped_data$initi) 

然後只需添加+ facet_wrap(~ initi)您ggplot。

編輯: 如果你想只是一個圖形,使用dput嘗試

graph_AB<-ggplot(reshaped_data,aes(x = A, y = B, colour = initi, group = L1)) + 
    geom_point(size = 5)+ 
    geom_line() + 
    ggtitle("DATA1 vs DATA2") 

graph_AB 

在未來,POST數據。例如,如果你這樣做dput(reshaped_data)並粘貼到你的問題,輸出將是這樣的:

structure(list(initi = c(0.005, 0.005, 0.005, 1, 1, 1, 2, 2, 
2), A = c(1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L), B = c(23.7, 31.2, 
35.8, 6.2, 10.1, 11.2, 14.2, 15.9, 16), C = c(1, 2, 3.1, 1, 2, 
3, 8, 7, 6.2), D = c(1, 2.1, 3.2, 1, 2.1, 3.5, 14.3, 13, 12.4 
), E = c(24.7, 31.2, 35.6, 6.2, 7, 7, 5.2, 5.5, 5.8), L1 = structure(c(2L, 
2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("d1", "d2"), class = "factor")), .Names = c("initi", 
"A", "B", "C", "D", "E", "L1"), class = "data.frame", row.names = c(NA, 
-9L)) 

任何人都可以粘貼到R和輕鬆使用。

+0

我認爲'初始',因爲它必須在傳說中,應該''colour''和小平面應該在'L1' ... – Arun 2013-02-19 19:44:16

+0

@阿倫嗯,也許。基於「初始值將代表每個圖表」我認爲目標是在這方面,但它很混亂。也許「將代表」應該是「會出現在」中,在這種情況下,我全都錯了。 – Gregor 2013-02-19 20:00:35

+0

是的,我也很困惑。 – Arun 2013-02-19 20:05:32

0
dlist <- list(d1 =data1 ,d2 = data2) 
reshaped_data <- melt(dlist, id.vars = c('initi','A','B','C','D','E')) 
graph_AB<-ggplot(reshaped_data,aes(x = A, y = B, colour = initi)) + 
geom_point(size = 5)+ 
ggtitle("DATA1 vs DATA2") 
print(graph_AB) 

我剛剛從原來的問題中刪除了geom_line!