1 数据
# Generate data (level2 == level1)
huron <- data.frame(year = 1875:1972, level = as.vector(LakeHuron), level2 = as.vector(LakeHuron))
# Change Level2
huron[1:50,2] <- huron[1:50,2]+100
huron[50:90,2] <- huron[50:90,2]-100
2 填充方法
2.1 原始版本
library(ggplot2)
h <- ggplot(huron, aes(year))
h +
geom_ribbon(aes(ymin = level, ymax = level2, fill = level > level2)) +
geom_line(aes(y = level)) + geom_line(aes(y=level2)) +
scale_fill_manual(values=c("red", "green"), name="fill")
问题在于颜色填充中有未被填充的区域,下面进行改进
2.2 改进版本一
huron <- rbind(huron, huron[huron$year == 1924,])
huron <- huron[order(huron$year),]
huron$id <- 1:nrow(huron)
huron$group <- ifelse(huron$id <= 50, "A", "B")
h <- ggplot(huron, aes(year))
h +
geom_ribbon(aes(ymin = level, ymax = level2, fill = group)) +
geom_line(aes(y = level)) + geom_line(aes(y = level2))
2.3 改进版本二
h <- ggplot() +
geom_ribbon(data = huron[huron$level >= huron$level2, ], aes(x = year, ymin = level, ymax = level2), fill="green") +
geom_ribbon(data = huron[huron$level <= huron$level2, ], aes(x = year, ymin = level, ymax = level2), fill="red") +
geom_line(data = huron, aes(x = year, y = level)) +
geom_line(data = huron, aes(x = year, y = level2))
h
查看方法原地址