我正在尝试更改为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)
这是我想得到的结果:
ggplot example http://i50.tinypic.com/25j8p5z.png
感谢您的时间。
答案 0 :(得分: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)
编辑:透明度
添加alpha=0.5
“工作”除了使用geom_rect
的问题,即使没有引用原始的df
数据框,也为{{1}的每一行绘制了一个矩形(在这种情况下为10次)。设置df
表示存在透明度,但是在预期水平的第10位。方法应该是用矩形注释;注释只绘制geom的单个实例,而不是原始数据框的每一行:
alpha=0.01
答案 1 :(得分:3)
来自joran的评论。答案是:
ggplot(df) +
geom_rect(aes(xmin = min(x), xmax = 0, ymin = min(y), ymax = 0), fill = "red") +
geom_rect(aes(xmin = min(0), xmax = max(x), ymin = min(y), ymax = 0), fill = "blue") +
geom_rect(aes(xmin = min(0), xmax = max(x), ymin = 0, ymax = max(y)), fill = "green") +
geom_rect(aes(xmin = min(x), xmax = 0, ymin = 0, ymax = max(y)), fill = "yellow") +
geom_point(aes(x, y), size = 5)