ggplot2叠加散点图

时间:2013-02-04 15:57:44

标签: r ggplot2

我有一个格式为

的文本文件
Date,ufov_mean,ufov_stdev,ufov_cov,ufov_int_pl,ufov_int_min,ufov_diff,ufov_nema_int,ufov_nema_dif,cfov_mean,cfov_stdev,cfov_cov,cfov_int_pl,cfov_int_min,cfov_diff,cfov_nema_int,cfov_nema_dif
24/01/11,5187.10,110.10,2.12,8.48,-6.46,7.25,7.40,3.76,5177.55,104.03,2.01,8.68,-6.29,7.25,7.40,3.76                
26/01/11,5182.35,106.65,2.06,6.50,-6.36,7.87,6.42,4.09,5170.29,100.45,1.94,6.45,-5.42,7.54,5.91,3.92                
28/01/11,5183.88,104.99,2.03,7.31,-6.48,9.63,6.87,5.06,5178.99,101.03,1.95,6.16,-6.39,9.08,6.28,4.76                
31/01/11,5183.55,98.35,1.90,5.66,-6.30,7.92,6.00,4.12,5172.41,96.00,1.86,5.71,-5.81,7.92,5.76,4.12                
02/02/11,5183.16,104.20,2.01,6.83,-6.43,7.47,6.61,3.88,5176.24,98.74,1.91,6.06,-5.65,7.47,5.84,3.88                
03/02/11,5184.14,106.77,2.06,8.16,-5.98,7.89,6.99,4.11,5179.31,100.62,1.94,7.45,-5.89,7.89,6.62,4.11 

我想要做的是在给定日期范围内的散点图中绘制其中几个参数。我可以使用

简单地绘制其中一个
qc<-data.frame(read.csv("tc_h1_qc", header=T))
qc$Date = as.Date(qc$Date, format='%d/%m/%y')
Sys.Date()
Sys.Date()-30

p <- ggplot(qc,aes(x=Date,y=cfov_cov)) + geom_point(shape=1,colour="red") + geom_line(colour="red") + theme_bw() + scale_x_date(labels = date_format("%d/%m/%y"), limits = c(Sys.Date()-30, Sys.Date()))

如何叠加其他参数,每个参数都有不同的geom_point颜色并创建一个合适的图例(类似于http://docs.ggplot2.org/0.9.3/facet_grid-27.png样式的图例,尽管我看不出如何在数据框结构中使用facet) ?

1 个答案:

答案 0 :(得分:5)

听起来你只想在一个散点图上绘制几个变量,每个变量用颜色编码。使用'ggplot2'和'reshape2'软件包相当容易。

第1步:将数据向下融化,因此所有值都在一列中。在这种情况下,我只是选择[Date]列(作为键),第4列到第7列进行绘图,因为它们具有相似的值范围。

library(reshape2)    
plot_Data <- melt(qc[,c(1,4:7)], id="Date")

看起来像这样:

         Date     variable value
1  2011-01-24     ufov_cov  2.12
2  2011-01-26     ufov_cov  2.06
3  2011-01-28     ufov_cov  2.03
4  2011-01-31     ufov_cov  1.90
5  2011-02-02     ufov_cov  2.01
6  2011-02-03     ufov_cov  2.06
7  2011-01-24  ufov_int_pl  8.48
8  2011-01-26  ufov_int_pl  6.50
9  2011-01-28  ufov_int_pl  7.31
10 2011-01-31  ufov_int_pl  5.66
11 2011-02-02  ufov_int_pl  6.83
12 2011-02-03  ufov_int_pl  8.16
13 2011-01-24 ufov_int_min -6.46
14 2011-01-26 ufov_int_min -6.36
15 2011-01-28 ufov_int_min -6.48
16 2011-01-31 ufov_int_min -6.30
17 2011-02-02 ufov_int_min -6.43
18 2011-02-03 ufov_int_min -5.98
19 2011-01-24    ufov_diff  7.25
20 2011-01-26    ufov_diff  7.87
21 2011-01-28    ufov_diff  9.63
22 2011-01-31    ufov_diff  7.92
23 2011-02-02    ufov_diff  7.47
24 2011-02-03    ufov_diff  7.89

第2步:现在,我们可以轻松绘制数据,使用[Date]列作为'x'值,将[value]列作为'y'值。我们将组分开,为它们着色,并通过将颜色指定为col=variable来添加图例,如下所示:

library(ggplot2)
ggplot(plot_Data, aes(x=Date, y=value, col=variable)) + geom_point()

您应该可以从这里进行调整以满足您的需求。