用ggplot绘制多个正方形

jer*_*n81 9 r ggplot2

我正试图改变ggplot的'背景'颜色.我想要实现的是下图所示的情节.我已经用geom_ribbon尝试了它,但我只能定义ymin和ymax.这允许我只创建两个正方形.

我到目前为止使用的代码:

df <- data.frame(x = rnorm(10), y = rnorm(10))

ggplot(df) +
 geom_point(aes(x, y)) +
 geom_ribbon(aes(x = x, ymin = min(y), ymax = 0), fill = "red", alpha = .5) +
 geom_ribbon(aes(x = x, ymin = min(0), ymax = max(y)), fill = "blue", alpha = .5)
Run Code Online (Sandbox Code Playgroud)

这是我想得到的结果:

ggplot示例http://i50.tinypic.com/25j8p5z.png

谢谢你的时间.

Bri*_*ggs 8

如果您希望"背景"颜色一直到图形的边缘而不仅仅是数据的极端,那么答案的变体就是:

ggplot(df) +
  geom_rect(xmin = -Inf, xmax = 0,   ymin = -Inf, ymax = 0,   fill = "red") +
  geom_rect(xmin = 0,    xmax = Inf, ymin = -Inf, ymax = 0,   fill = "blue") +
  geom_rect(xmin = 0,    xmax = Inf, ymin = 0,    ymax = Inf, fill = "green") +
  geom_rect(xmin = -Inf, xmax = 0,   ymin = 0,    ymax = Inf, fill = "yellow") +
  geom_point(aes(x, y), size = 5)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


编辑:透明度

添加alpha=0.5是"工作"除了通过使用geom_rect,即使没有引用原始df数据框,为每一行df(在这种情况下为10次​​)绘制矩形的问题.设置alpha=0.01显示有透明度,但是在预期水平的第10位.方法应该是用矩形注释; 注释只绘制geom的单个实例,而不是原始数据框的每一行:

ggplot(df) +
  annotate("rect", xmin=-Inf, xmax=0, ymin=-Inf, ymax=0, fill="red", alpha=0.5) +
  annotate("rect", xmin=0, xmax=Inf, ymin=-Inf, ymax=0, fill="blue", alpha=0.5) +
  annotate("rect", xmin=0, xmax=Inf, ymin=0, ymax=Inf, fill="green", alpha=0.5) +
  annotate("rect", xmin=-Inf, xmax=0, ymin=0, ymax=Inf, fill="yellow", alpha=0.5) +
  geom_point(aes(x, y), size=5)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述