使用来自不同列表/数据框架

时间:2016-12-09 21:27:06

标签: r ggplot2

我有一个ggplot,其中包含列表中三个数据框的数据。每个数据框都有一个" date"和"测量"向量。这些是来自仪器的每小时数据。我有一个单独的列表,其中包含三个具有手动数据点的数据框。这些数据每月收集一次。数据帧的命名在每个列表中都是一致的,但是。

我想要做的是将手动数据绘制为小时数据之外的点。

我已经设法使用此代码非常接近我想要的内容:

p1  <- ggplot(data_list[["Inst1"]],aes(date,elevation))+geom_line(aes(color="Instrument 1"))+
              geom_line(data=data_list[["Inst2"]],aes(color="Instrument 2"))+
              geom_line(data=data_list[["Inst3"]],aes(color="Instrument 3"))+

              geom_point(data=man_list[["Inst1"]],aes(date,water_el,color="Instrument 1",size = "3"))+
              geom_point(data=man_list[["Inst2"]],aes(date,water_el,color="Instrument 2",size = "3"))+
              geom_point(data=man_list[["Inst3"]],aes(date,water_el,color="Instrument 3",size = "3"))+

              labs(color="")

Here is the plot.

我不知道如何解决两个主要问题。

1)我更喜欢让Legend显示与小时数据(行)分开标记的手动点。我意识到使用颜色来生成图例是这里的问题,但我不确定我还能采取什么其他方法。但是,我希望点和线的颜色相同。

2)我不确定为什么尺寸会出现在图例中。

帮助?

更新:

 str(data_list)
 List of 5
 $ Inst1 :'data.frame':  7735 obs. of  4 variables:
 $ date: POSIXct[1:7735], format: "2016-01-22 01:56:00" "2016-01-22 02:56:00" ...
 $ measurement: num [1:7735] 1.73 1.73 1.73 1.73 1.74 ...
 $ trans_el   : num [1:7735] 341 341 341 341 341 ...
 $ elevation  : num [1:7735] 343 343 343 343 343 ...

 str(man_list)
 List of 5
 $ Inst1 :'data.frame':  14 obs. of  6 variables:
 $date          : POSIXct[1:14], format: "2015-12-07 15:16:00" "2015-12-23 15:51:00" ...
$ man           : num [1:14] 3.69 4.33 4.28 4.07 3.71 ...
$ trans_h2o     : num [1:14] NA NA NA 1.72 2.08 ...
$ trans_el      : num [1:14] NA NA NA 341 341 ...
$ water_el      : num [1:14] 343 342 342 343 343 ...
$ trans_el_round: num [1:14] NA NA NA 341 341 ...

每个列表有5个Inst1到Inst 5的数据帧。在给定列表中,每个数据帧设置相同(具有相同的变量和名称)。但是每个数据帧的日期向量是不同的,并且每个列表之间的日期向量是不同的。

所以,

data_list [[&#34; Inst1&#34;]] $ date = / data_list [[&#34; Inst2&#34;]] $ date

data_list [[&#34; Inst1&#34;]] $ date = / man_list [[&#34; Inst1&#34;]] $ date

1 个答案:

答案 0 :(得分:0)

这是一个使用data(mtcars)

实现评论的示例
library(ggplot2)
mtcars$cyl <- as.factor(mtcars$cyl)

ggplot(data = mtcars, aes(disp, hp)) +
    geom_point(aes(fill = cyl, shape = cyl), size = 4, stroke = 0) + # note size not in aes(); using stroke = 0 to eliminate edges, which would be part of the color scale
    stat_smooth(aes(group = cyl, color = cyl), method = "lm", se = F) +
    scale_color_brewer(palette = "Set1") +
    scale_fill_brewer(palette = "Dark2") +
    scale_shape_manual(values = 21:24) + # critical because only these shapes have a fill in addition to color, all the others are only just color
    guides(color = guide_legend(order = 1),
       fill = guide_legend(order = 2),
       shape = guide_legend(order = 2))

enter image description here

如果您无法通过此示例进行转移,请尽快帮助您完成特定示例与您的数据。干杯。