r - 将透明块带添加到 ggplot 以获取 y 范围
问题描述
我正在尝试为以下 y 范围向我的 ggplot 添加四个透明带:
y<2 & y>1.5
y<1.5 & y>1
y<1 & y>0.5
y<0.5 & y>0
我不希望范围重叠,因为这会改变我分配给每个波段的颜色(因为它们是透明的)。
我可以得到我使用后的效果geom_area
(见下面的代码),但它们重叠,这会改变颜色。
我想知道是否有更好的方法可以让乐队专门在我想要的区域?
df <- data.frame(y1=rep(1.99, 100),
y2=rep(1.49, 100),
y3=rep(0.99, 100),
y4=rep(0.49, 100),
x =1:100)
ggplot(aes(x=x), data = df) +
geom_area(aes(y=ifelse(y1<2 & y1>1.5, y1, 0)), data=df, fill="yellow", alpha = 0.3) +
geom_area(aes(y=ifelse(y2<1.5 & y2>1, y2, 0)), data=df, fill="darkgoldenrod1", alpha = 0.3) +
geom_area(aes(y=ifelse(y3<1 & y3>0.5, y3, 0)), data=df, fill="darkorange1", alpha = 0.3) +
geom_area(aes(y=ifelse(y4<0.5 & y4>0, y4, 0)), data=df, fill="darkred", alpha = 0.3) +
theme_classic()
另外,可能是单独的问题,有没有办法让填充颜色一直到轴,而不是仅仅在它周围留下一个白色缓冲空间?
解决方案
geom_rect
在绘制任何点之前使用
ggplot() +
geom_rect(aes(xmin = -Inf, xmax = Inf, ymin = 1.5, ymax = 2), fill="yellow", alpha = 0.3) +
geom_rect(aes(xmin = -Inf, xmax = Inf, ymin = 1, ymax = 1.5), fill="darkgoldenrod1", alpha = 0.3) +
geom_point(data = df, aes(x = x, y = y1)) +
theme_classic()
请参阅geom_rect 和 alpha - 这是否适用于硬编码值?让 alpha 与矩形一起正常工作。
推荐阅读
- javascript - 使用 React 从 JSON 文件中读取数据
- java - java - 如何处理java流api中的可选对象?
- c# - 从 Asp Net Core WebApi 返回图像文件
- php - Android-PHP error undefined index Error raised
- wordpress - 如何在 wpbakery(visual composer) 中创建一个类似于 bootstrap 3 容器类的容器?
- java - 在设置值之前检查数组的长度
- php - 更改 php.ini 文件被忽略
- azure-active-directory - azure AD 和 Keycloak 同步
- python - 如何使用动态生成的内容作为输入在 Plotly Dash 中显示绘图?
- react-router - 如果未传递所有参数,则 React Router 修改 URL