r - 使用ggplot不同的交叉线之间的阴影区域
问题描述
我想用不同的颜色遮蔽下图的区域。我想在绿线的右边用绿色遮住它,在它的左边用红色遮住它。
我已经看过这个类似的问题,但我想在 ggplot 中做: 类似的问题
#Break-even Chart
Q <- seq(0,50,1)
FC <- 50
P <- 7
VC <- 3.6
total_costs <- (FC + VC*Q)
total_revenues <- P*Q
BEP <- round(FC / (P-VC) + 0.5)
df_bep_chart <- as.data.frame(cbind(total_costs, total_revenues, Q))
ggplot(df_bep_chart, aes(Q, total_costs)) +
geom_line(group=1, size = 1, col="darkblue") +
geom_line(aes(Q, total_revenues), group=1, size = 1, col="darkblue") +
theme_bw() +
geom_ribbon(aes(ymin = total_revenues, ymax = total_costs), fill = "blue", alpha = .5) +
geom_vline(aes(xintercept = BEP), col = "green") +
geom_hline(aes(yintercept = FC), col = "red") +
labs(title = "Break-Even Chart",
subtitle = "BEP in Green, Fixed Costs in Red") +
xlab("Quanity") +
ylab("Money")
解决方案
尝试这个。您必须确定填充颜色Q
是在左侧还是在右侧,并用于scale_fill_manual
设置填充颜色:
#Break-even Chart
Q <- seq(0,50,1)
FC <- 50
P <- 7
VC <- 3.6
total_costs <- (FC + VC*Q)
total_revenues <- P*Q
BEP <- round(FC / (P-VC) + 0.5)
df_bep_chart <- as.data.frame(cbind(total_costs, total_revenues, Q))
library(ggplot2)
ggplot(df_bep_chart, aes(Q, total_costs)) +
geom_line(group=1, size = 1, col="darkblue") +
geom_line(aes(Q, total_revenues), group=1, size = 1, col="darkblue") +
theme_bw() +
geom_ribbon(aes(ymin = total_revenues, ymax = total_costs, fill = ifelse(Q <= BEP, "red", "green")), alpha = .5) +
scale_fill_manual(values = c(red = "red", green = "green")) +
guides(fill = FALSE) +
geom_vline(aes(xintercept = BEP), col = "green") +
geom_hline(aes(yintercept = FC), col = "red") +
labs(title = "Break-Even Chart",
subtitle = "BEP in Green, Fixed Costs in Red") +
xlab("Quanity") +
ylab("Money")
由reprex 包于 2020-06-16 创建(v0.3.0)
推荐阅读
- python - 如何使用 Python 停用 Telepot 功能
- c - 在二叉树 adt 上传递的错误值导致错误的输出
- c# - 如何从 Unicode 值创建表情符号字符串?
- vue.js - Vue 倒数计时器会在 console.log 上打印出来,但不会作为数据传递
- javascript - 将混合心情与黑色文本混合
- sql - 如果不存在关系,SQL 删除行
- javascript - JS - 过滤 Promise 对象
- multithreading - 使用 vs2017 时 std::thread::join() 在某些情况下挂起
- python - 如何解决 django 错误:raise TemplateDoesNotExist(', '.join(template_name_list), chain=chain)
- react-native - 如何在 react-native for android 中更改应用程序图标背景颜色