2015-10-15 141 views
1

我有一個CSV已下列數據:繪製多個變量散點圖使用GGPLOT2和熔化

Hybrid ON OFF Model 
1 1.022 1.033 0.939 283 
2 0.988 1.016 1.068 283 
3 1.012 0.958 1.872 283 
4 1.073 5.476 0.907 283 
5 1.054 0.952 0.902 283 
6 0.992 0.941 0.908 283 

我想創建這樣的圖像點圖。

enter image description here

基本上紅色綠色和藍色是混合,上下車分別與上x軸它們上的「模型」分組。我熟悉使用plot()創建簡單的圖,但我一直在閱讀一些教程,這可以通過使用ggplot和fusion ..這看起來有點先進。感謝有人能提供一些指標。我曾嘗試加載CSV後創建不同的配置級別:

load <- read.csv("combined_temp.csv", sep="," , header=TRUE)  

df <- data.frame(Config= rep(c("Hybrid", "ON", "OFF"))) 

我想在此之後使用ggplot但不知道怎麼做..甚至不知道我做的複製權利。對不起,我感到非常新R.

+0

有關一個compareble問題的一些靈感,[見這個答案](http://stackoverflow.com/a/21309765/2204410) – Jaap

+0

我相信有一個更簡單解決這個問題的方法。任何人? –

回答

0

的第一步是將數據重塑爲長格式,在這之後,你可以很容易地做出這樣的情節與ggplot2

library(reshape2) 
dfl <- melt(df, id = "Model") 

library(ggplot2) 
ggplot(dfl, aes(x = factor(Model), y = value)) + 
    geom_point(aes(color = variable), shape = 1, size = 4, position = position_dodge(width = 0.4)) + 
    theme_bw() 

這導致了以下情節:

enter image description here


爲了說明原因,我已經擴大和改變的數據。

使用的數據

df <- structure(list(Hybrid = c(1.022, 0.988, 1.012, 1.073, 1.054, 0.992, 2.022, 1.988, 2.012, 2.073, 2.054, 1.992), 
        ON = c(1.033, 1.016, 0.958, 3.476, 0.952, 0.941, 2.033, 2.016, 1.958, 3.476, 1.952, 1.941), 
        OFF = c(0.939, 1.068, 1.872, 0.907, 0.902, 0.908, 2.939, 1.068, 1.872, 2.907, 2.902, 2.908), 
        Model = c(283L, 283L, 283L, 283L, 283L, 283L, 382L, 382L, 382L, 382L, 382L, 382L)), 
       .Names = c("Hybrid", "ON", "OFF", "Model"), class = "data.frame", row.names = c(NA, -12L)) 
+0

這看起來不錯,謝謝。爲什麼我們需要使用position_dodge?我在我的解決方案中採用了類似的方法,但使用Facet根據Model對小區進行分組。由於使用facet實現相同的目的,使用position_dodge vs facet有什麼好處? –

+0

使用'position_dodge'的好處是你可以在一個繪圖中繪製不同的模型。但是,當您有很多模型時,使用構面確實更好。 – Jaap