r - R - 使用 geom_ribbon 以不同颜色为线条下方/上方的区域着色
问题描述
我有一个简单的折线图,它在零附近波动。使用geom_ribbon,我想用两种不同的颜色为线和零之间的区域着色,具体取决于线是高于还是低于零。使用单一颜色填充该区域有效:
但是,我尝试以不同颜色填充该区域(遵循此解决方案)失败,因为创建了两个单独的色带,它们连接零以下或零以上的点。
df%>%
ggplot(aes(x=month, dif))+
geom_line()+
scale_x_date(date_breaks = "1 month", guide = guide_axis(angle = 90))+
geom_ribbon(aes(x=month, ymin=0, ymax=dif, fill= dif>0), alpha=.5)+
scale_fill_manual(values=df$filler, name="fill")
关于如何解决这个问题的任何建议?
可重复的样品:
df<-structure(list(month = structure(c(17532, 17563, 17591, 17622,
17652, 17683, 17713, 17744, 17775, 17805, 17836, 17866), class = "Date"),
high = c(2618.74, 2453.39, 2075.89, 2535.89, 3331.15, 2238.85,
3013.85, 3073.36, 2348.01, 3410.8, 653.56, 2840.22), low = c(3445.45,
1352.91, 1594.51, 1344.27, 1676.73, 2410.76, 1289.4, 1330.72,
1824.69, 1843.76, 1500.12, 3252.97), filler = c("red", "lightblue",
"lightblue", "lightblue", "lightblue", "red", "lightblue",
"lightblue", "lightblue", "lightblue", "red", "red"), dif = c(-826.71,
1100.48, 481.38, 1191.62, 1654.42, -171.91, 1724.45, 1742.64,
523.32, 1567.04, -846.56, -412.75)), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -12L))
解决方案
推荐阅读
- c# - Post.Cast<> 升级后不再工作
- git - 将本地未提交的更改移动到新分支
- python - 将这两列从熊猫中的不同数据框中相乘时得到 NaN
- php - 发布到远程 WordPress 站点导致多个元键/元值
- postgresql - postgres 使用可选的键值对构建 json 对象
- javascript - 如何使用 parseFloat 允许逗号?
- python - 未找到“用户创建”的 DRF 反向
- python - Python csv reader for row in reader给出语法错误
- javascript - 无法分配给字符串“”的只读属性“0”
- c# - 将 DbContext 和 ILogger 注入数据库 DAL 构造函数,最佳实践