2015-10-15 409 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