r - ggplot2:添加背景层

标签 r ggplot2

我想在堆叠区域图形集的背景中添加暗/亮相位信息,以突出显示光线如何影响曲线的形状。我的数据框如下所示:

> str(MDist.median)
'data.frame':   2880 obs. of  6 variables:
 $ groupname: Factor w/ 8 levels "rowA","rowB",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ fCycle   : Factor w/ 6 levels "predark","Cycle 1",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ fPhase   : Factor w/ 2 levels "Light","Dark": 2 2 2 2 2 2 2 2 2 2 ...
 $ starttime: num  0.3 60 120 180 240 300 360 420 480 540 ...
 $ dists    : Factor w/ 3 levels "inadist","smldist",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ value    : num  110 123 124 128 132 ...
示例数据:
> head(MDist.median)
  groupname  fCycle fPhase starttime   dists  value
1      rowA predark   Dark       0.3 inadist 110.00
2      rowA predark   Dark      60.0 inadist 123.25
3      rowA predark   Dark     120.0 inadist 124.10
4      rowA predark   Dark     180.0 inadist 128.35
5      rowA predark   Dark     240.0 inadist 131.80
6      rowA predark   Dark     300.0 inadist 140.30
我的面积图叠加了3种dists在 y 轴上按 x 轴上的 starttime。
dists.med.areaplot <- qplot(starttime,value,fill=dists,facets=~groupname,
 geom='area',data=MDist.median, stat='identity') + 
 labs(y='median distances', x='time(s)', fill='Distance Types')+
 opts(title='Changes in Fish Activity and Activity Type') + 
 scale_fill_brewer(type='seq')
我想在每个图后面添加垂直矩形,这些矩形由每个 fCycle 的最小和最大开始时间水平定位,其中 fPhase==“Dark”。我在 GIMP 中编辑了我的图形集以显示我的意思:
my altered graphset
我一直在尝试使用主题,但效果不佳。想法?
预计到达时间
因此,使用此示例(来自 Hadley 的 website ):
(unemp <- qplot(date, unemploy, data=economics, geom="line", 
  xlab = "", ylab = "No. unemployed (1000s)"))

presidential <- presidential[-(1:3), ]

yr <- range(economics$unemploy)
unemp + geom_rect(
  aes(NULL, NULL, xmin = start, xmax = end, fill = party), 
  ymin = yr[1], ymax = yr[2], data = presidential) + 
  scale_fill_manual(values = alpha(c("blue", "red"), 0.2)
)
我可以用我的数据做到这一点:
dists.med.areaplot + geom_rect(
      aes(NULL, NULL, xmin = phase_start, xmax = phase_end, fill = fPhase), 
      ymin = -Inf, ymax = Inf, data = phase_starts) + 
      scale_fill_manual(values = alpha(c("#cccccc", "#000000"), 0.2)
    )
它为图例添加了 Light 和 Dark 类别,并将所有颜色更改为灰色。
如果我省略了 scale_fill_manual(values = alpha(c("#cccccc", "#000000"), 0.2) ,我得到了我期望的矩形,但图例改变了,但它们完全不透明,在我的原始图形之上,并在我的颜色序列中使用第 2 种颜色。
如何在原始图后面制作 geom_rect?

最佳答案

使用您更新的代码,我将采用 dark 的子集地区。然后加

geom_rect(data = dark.subset, aes(xmin = phase_start, xmax = phase_end), 
              ymin = -Inf,
              ymax = Inf,
              fill = alpha("#000000", 0.2))

这将避免映射 lightdark到任何规模。至于出现在顶部,以不同的顺序添加您的几何图形:
ggplot(...)+
  geom_rect(...)+
  geom_area(...)

关于r - ggplot2:添加背景层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3469975/

相关文章:

r - 如何识别不合逻辑的字符串/句子

r - 对列表中每个 data.frame 的列进行求和,给出唯一包含总和的数据框

r - 删除值小于 R 的行

r - 在列表列表上嵌套应用语句

r - ggplot boxplot - 对数轴的 mustache 长度

r - CairoPNG 增加了图边距之外的文本大小

r - 如何隐藏帮助程序功能的文档?

r - ggplot2 中的图例,删除级别

ggplot 中大集合的随机定性颜色

r - 指定标签和中断时,ggplot scale_fill_identity 图例丢失