我在试着画出火灾后每年出苗的苗木数量。苗木的数量在y轴上,也就是火在x轴上的年份。我想在这个图下面添加一个方框或矩形,以显示另一个变量(假设降雨量)的值每年都会变化。如下所示:

我已经设法做到了这一点,用geom_rect()为每年添加了一个单独的矩形,但是有没有一种方法可以不使用10个单独的矩形呢?特别是这样我只需要指定一次颜色修改,而不是在10个不同的geom_rect()调用中??
这两篇较早的文章(one,two)帮助我走到了今天,但我只想用几行代码就能做到这一点。我还没能让scale_fill_gradient()正常工作,但也许这是解决方案的一部分?
此处的数据:
yr_since <- c(1:10)
density <- c(23, 58, 68, 126, 154, 103, 90, 94, 73, 59)
rain <- c(3, 6, 8, 5, 8, 3, 4, 4, 6, 2)
data <-as.data.frame(cbind(yr_since, density, rain))当前(可怕的)代码如下:
plot <- ggplot(data = data, aes(x = yr_since)) +
geom_col(aes(y=density), width = 0.95) +
scale_x_discrete(expand = c(0,0), drop=FALSE, labels = yr_since) +
labs(x = "Years since fire", y = "Density (stems/ha)")
plot +
geom_rect(data=data,
aes(xmin = 0.5, ymin = -5,
xmax = 1.5, ymax = 0,
fill = rain[1])) +
geom_rect(data=data,
aes(xmin = 1.5, ymin = -5,
xmax = 2.5, ymax = 0,
fill = rain[2])) +
geom_rect(data=data,
aes(xmin = 2.5, ymin = -5,
xmax = 3.5, ymax = 0,
fill = rain[3])) +
geom_rect(data=data,
aes(xmin = 3.5, ymin = -5,
xmax = 4.5, ymax = 0,
fill = rain[4])) +
geom_rect(data=data,
aes(xmin = 4.5, ymin = -5,
xmax = 5.5, ymax = 0,
fill = rain[5])) +
geom_rect(data=data,
aes(xmin = 5.5, ymin = -5,
xmax = 6.5, ymax = 0,
fill = rain[6])) +
geom_rect(data=data,
aes(xmin = 6.5, ymin = -5,
xmax = 7.5, ymax = 0,
fill = rain[7])) +
geom_rect(data=data,
aes(xmin = 7.5, ymin = -5,
xmax = 8.5, ymax = 0,
fill = rain[8])) +
geom_rect(data=data,
aes(xmin = 8.5, ymin = -5,
xmax = 9.5, ymax = 0,
fill = rain[9])) +
geom_rect(data=data,
aes(xmin = 9.5, ymin = -5,
xmax = 10.5, ymax = 0,
fill = rain[10]))发布于 2018-02-13 07:22:24
您可以使用y的固定负值进行额外的geom_col调用来添加它们
library(ggplot2)
data <- data.frame(yr_since = c(1:10),
density = c(23, 58, 68, 126, 154, 103, 90, 94, 73, 59),
rain = c(3, 6, 8, 5, 8, 3, 4, 4, 6, 2))
ggplot(data, aes(x = yr_since, y = density)) +
geom_col(width = 0.95) +
geom_col(aes(y = -5, fill = rain), width = 1) +
scale_x_continuous(breaks = data$yr_since, expand = c(0, 0)) +
scale_y_continuous(expand = c(0, 0), limits = c(-5, max(data$density) * 1.05)) +
labs(x = "Years since fire",
y = "Density (stems/ha)")

根据需要进行调整。
https://stackoverflow.com/questions/48757044
复制相似问题