我想向使用分组数据(因子x轴)和对数刻度y轴创建的绘图中添加背景填充。添加对数刻度后,将删除背景填充。
这是一个错误,还是我做错了什么?
可复制的示例数据:
我将使用mtcars
数据,但将cyl
变量作为一个因素。这是模仿我的数据的最简单的数据集。
library(dplyr)
library(ggplot2)
mtcars_f <- mtcars %>%
mutate(cyl.f = factor(cyl))
这在正常的y轴刻度上可以正常工作。
mtcars_f %>%
ggplot(aes(cyl.f, mpg)) +
geom_rect(xmin=-Inf, ymin=17.5, xmax=Inf, ymax=22.5) +
geom_point()
问题: 但是,在变换y轴时,背景矩形填充将被删除:
mtcars_f %>%
ggplot(aes(cyl.f, mpg)) +
geom_rect(xmin=-Inf, ymin=17.5, xmax=Inf, ymax=22.5) +
geom_point() +
scale_y_log10()
请注意:这是与this similarly titled question
不同的问题 编辑答案: @Tung的答案有效!也可以通过将数据作为美观因素传递到geom_rect
来解决,并将x轴指定为“离散”
rect_df <-
data_frame(xmin=-Inf, ymin=17.5, xmax=Inf, ymax=22.5)
mtcars_f %>%
ggplot(aes(cyl.f, mpg)) +
geom_rect(data = rect_df, aes(xmin=xmin, ymin=ymin, xmax=xmax, ymax=ymax), inherit.aes = F) +
geom_point() +
scale_y_log10() +
scale_x_discrete()
答案 0 :(得分:2)
这是使用annotate
的解决方法,直到您找出geom_rect
出了什么问题
library(dplyr)
library(ggplot2)
mtcars_f <- mtcars %>%
mutate(cyl.f = factor(cyl))
mtcars_f %>%
ggplot(aes(cyl.f, mpg)) +
scale_y_log10() +
scale_x_discrete() +
annotate(geom = "rect",
xmin = -Inf, ymin = 17.5, xmax = Inf, ymax = 22.5,
fill = "light blue", alpha = 0.8) +
geom_point() +
theme_classic(base_size = 12)
由reprex package(v0.2.0.9000)于2018-08-24创建。