如何在ggplot2中为两条线之间的区域着色/着色?

攀爬

我想用两条线表示观察数据和来自特殊模型的数据。还有另外两条线代表其他模型的变异性的最大值和最小值。目标是将这两条线之间的区域涂成灰色,以便前两条线仍然可见。

这是重现数据的代码:

# create the data set
Month.vec <- c(1:12)
Model.vec <- c(70.33056, 58.91058, 73.40891, 74.42824, 108.45975, 125.85887, 126.02867, 102.54128, 70.66263, 61.30316, 66.04057, 75.75262)
Obs.vec <- c(62.64178, 52.39356, 63.07376, 52.87248, 70.80587, 81.85081, 88.29134, 77.22920, 67.67458, 64.74425, 63.96322, 69.89868)
Up_lim.vec <- c(83.46967, 71.27700,  86.43001,  77.62739, 108.32674, 112.61118, 125.43512,  93.71193,  80.17298,  75.01851,  79.05700,  85.40042)
Low_lim.vec <- c(76.44381, 65.19571, 74.27778, 59.91012, 82.14684, 84.09151, 77.91529, 66.21702, 60.89712, 67.85613, 72.49409, 79.13741)
df <- as.data.frame(cbind(Month.vec, Obs.vec, Model.vec, Up_lim.vec, Low_lim.vec))
colnames(df) <- c("Month", "Observation", "Model", "Upper Limit", "Lower Limit")

一个带有四行的“正常”图很容易完成:

# plot 
df %>% 
  as_tibble() %>% 
  pivot_longer(-1) %>% 
  ggplot(aes(Month, value, color = name)) + 
  scale_color_manual("",values= c("blue", "yellow", "red", "black")) +
  scale_x_continuous(breaks = seq(1, 12, by = 1)) +
  scale_y_continuous(breaks = seq(0, 140, by = 20)) +
  ylab("Precipitation [mm]") +
  geom_line() +
  theme_bw()

这导致此输出: 在此处输入图片说明

所以这个想法是黑色和蓝色线之间的区域用灰色或类似的颜色阴影,这样蓝色和黄色的线仍然可见。

这个问题来看,结果应该有点像这样在此处输入图片说明

我知道这里有一些类似的问题,其中大多数暗示使用geom_ribbon. 我试过这个,但只收到以下错误消息:

Error: Aesthetics must be either length 1 or the same as the data (48): ymax and ymin

有人知道如何做到这一点吗?

亚历克斯

我认为将数据保存为更广泛的格式然后用于geom_ribbon创建阴影区域会更容易

df %>% 
  as_tibble() %>% 
  ggplot +
  geom_line(aes(Month, Model, color = 'Model')) +
  geom_line(aes(Month, Observation, color = 'Observation')) +
  geom_ribbon(aes(Month, ymax=`Upper Limit`, ymin=`Lower Limit`), fill="grey", alpha=0.25) +
  scale_x_continuous(breaks = seq(1, 12, by = 1)) +
  scale_y_continuous(breaks = seq(0, 140, by = 20)) +
  scale_color_manual(values = c('Model' = 'yellow','Observation' = 'red')) +
  ylab("Precipitation [mm]") +
  theme_bw() +
  theme(legend.title = element_blank())

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用 Matplotlib 在两条线之间着色

如何使用ggplot2在两条线之间绘制密度图?

ggplot2绘制两条线之间的角度

在3D图中的两条线之间着色

在极轴上的两条线之间着色一段(matplotlib)

如何在python中的另外两条线之间插入一条线

R ggplot2 geom_ribbon:当阴影线/着色区域在没有线位于下方且线没有位于上方时,由两侧的两条交叉线所界定

ggplot2:无法使用geom_ribbon为相交线之间的区域着色

如何在地球上找到两条线(geojson的线串)之间的距离

使用ggplot2在同一图中绘制不同年份的两条线

ggplot2:在两条线的交点处添加点

如何计算两条线之间的水平距离

两条线之间的距离

用散景为两条曲线之间的区域着色

如何在Julia中计算两条线之间的距离(2个坐标点的序列)

使用R使用ggplot2画两条线并放下一条线

如何在Ggplot的一个图表上有两条线

如何在锚定点的两条线之间保持30˚的距离

有人将如何在这两条线之间放置碰撞?

2D 中两条线之间的相似性

如何使用python opencv测量同一图像中两条线之间的角度?

如何在日内使用烛台在HighStocks中绘制两条线

Opencv和python - 两条线之间的阴影区域

在不同比例/子图轴上填充两条线之间的区域

如何在Unity3d中测量两条线段之间的距离

svg 线长度为“l”,两条线之间的距离为“d”

如何调整在两条线之间绘制的线的长度?

您如何在具有不同 x 轴分辨率的两条线之间进行填充?

在ggplot图中绘制两条线