如何使用ggplot2填充图形区域
How to fill out an area of a graph with ggplot2
我正在使用 R 为我的经济学之一绘制图表 类,我想填写图表的一个区域来表示无谓损失。
下面是我用来制作图表的代码:
rm(list = ls())
library(tidyverse)
housing_market <- ggplot(data.frame(x = c(0,3000)), aes(x = x)) +
stat_function(fun = function(x){2.5-0.001*x}, color = "green", lwd = 1) +
stat_function(fun = function(x){1}, color = "purple", lwd = 1) +
stat_function(fun = function(x){0.70}, color = "blue", lwd = 1) +
ylim(0,2.5) +
annotate(geom = "text", label = "Inverse Demand = 2.5 - 0.001Q", x = 1250, y = 2, size = 4) +
annotate(geom = "text", label = "MSC = 1", x = 500, y = 1.2, size = 4) +
annotate(geom = "text", label = "MPC = 0.70", x = 500, y = 0.5, size = 4) +
ggtitle("Housing Market") +
labs(x = bquote(Q(ft.^2)), y = bquote(P("$"/ft.^2))) +
geom_point(aes(1500,1), color = "black", size = 4) +
geom_point(aes(1800,1), color = "black", size = 4) +
geom_point(aes(1800,0.7), color = "black", size = 4)
housing_market
无谓损失是由点 (1500,1)、(1800,1) 和 (1800,0.7) 创建的三角形。我试过使用 geom_rect,但我想不出一种方法让它只填充三角形。任何帮助将不胜感激。
显然,三角形是特定的多边形(而不是矩形);)
您可以使用坐标定义数据框。我在 geom 调用中执行此操作。但是,从编码的角度来看,您可能希望在外部执行此操作。附带说明:您也可以使用此外部数据框在一个 geom_point()
调用中定义点。
housing_market +
geom_polygon(data = data.frame( x = c(1500, 1800, 1800)
, y = c(1,1,0.7))
, aes(x = x, y = y) # set aesthetic mapping for polygon
, fill = "orange" # put any other parameter
)
在末尾添加 geom_polygon 层会“覆盖”您的观点。
因此,您可能希望在构建绘图时向上移动 geom_polygon()
层,或者在多边形调用之后放置 geom_point()
调用。
我正在使用 R 为我的经济学之一绘制图表 类,我想填写图表的一个区域来表示无谓损失。
下面是我用来制作图表的代码:
rm(list = ls())
library(tidyverse)
housing_market <- ggplot(data.frame(x = c(0,3000)), aes(x = x)) +
stat_function(fun = function(x){2.5-0.001*x}, color = "green", lwd = 1) +
stat_function(fun = function(x){1}, color = "purple", lwd = 1) +
stat_function(fun = function(x){0.70}, color = "blue", lwd = 1) +
ylim(0,2.5) +
annotate(geom = "text", label = "Inverse Demand = 2.5 - 0.001Q", x = 1250, y = 2, size = 4) +
annotate(geom = "text", label = "MSC = 1", x = 500, y = 1.2, size = 4) +
annotate(geom = "text", label = "MPC = 0.70", x = 500, y = 0.5, size = 4) +
ggtitle("Housing Market") +
labs(x = bquote(Q(ft.^2)), y = bquote(P("$"/ft.^2))) +
geom_point(aes(1500,1), color = "black", size = 4) +
geom_point(aes(1800,1), color = "black", size = 4) +
geom_point(aes(1800,0.7), color = "black", size = 4)
housing_market
无谓损失是由点 (1500,1)、(1800,1) 和 (1800,0.7) 创建的三角形。我试过使用 geom_rect,但我想不出一种方法让它只填充三角形。任何帮助将不胜感激。
显然,三角形是特定的多边形(而不是矩形);)
您可以使用坐标定义数据框。我在 geom 调用中执行此操作。但是,从编码的角度来看,您可能希望在外部执行此操作。附带说明:您也可以使用此外部数据框在一个 geom_point()
调用中定义点。
housing_market +
geom_polygon(data = data.frame( x = c(1500, 1800, 1800)
, y = c(1,1,0.7))
, aes(x = x, y = y) # set aesthetic mapping for polygon
, fill = "orange" # put any other parameter
)
在末尾添加 geom_polygon 层会“覆盖”您的观点。
因此,您可能希望在构建绘图时向上移动 geom_polygon()
层,或者在多边形调用之后放置 geom_point()
调用。