首页 > 解决方案 > 用 ggplot2 绘制部分平衡(一张图中的两个函数)

问题描述

我想使用 ggplot2 创建一个图表来可视化部分平衡问题。我四处寻找解决方案,但找不到。

我想在同一个图中绘制两个函数,最好使用 ggplot2。我想用 x 轴上的 Q 和 y 轴上的 P 绘制逆需求函数和离散边际成本曲线。

  1. 边际成本曲线如下:

    • 对于 [0,70] 中的所有 Q,P = 0.794
    • 对于 (70,140] 中的所有 Q,P = 0.956
    • 对于 (140,infty) 中的所有 Q,P = 2.802

然后,

  1. 逆需求曲线由以下函数描述:
    • P = (199/Q)^(1/0.14)

我可以绘制边际成本曲线,但我不熟悉使用 ggplot2 绘制自定义函数。我设法在不使用 *function = * 命令的情况下单独绘制函数,但我无法修复可见域 (xlim = c(0,300)),也无法将其与边际成本曲线结合起来。

提前致谢。

编辑

我到目前为止的代码如下:

        # Graphic representation
#T1 is the discrete MgC curve
    T1 <- as.data.table(c(0,75, 75,140, 140,300))
    T1$P <- c(0.793,0.793,
              0.956,0.956,
              2.802,2.802)
    setnames(T1, c("V1"),c("Q"))
#D0 is the inverse demand curve    
    D0 <- data.table(c(1,2,3,4,5))
    setnames(D0,c("V1"),c("P"))
    D0$Q <- ((D0$P)^(-0.14))*199.01

# Q1 and Q2 are quantities demanded when P=2.802 and 1.9 respectively     
    Q1 <- data.table(c(rep(199.01*(2.802)^-0.14,3)),c(0,2.5,5))
    Q2 <- data.table(c(rep(199.01*(1.9)^-0.14,3)),c(0,2.5,5))
    setnames(Q1,c("V1","V2"),c("Q","P"))
    setnames(Q2,c("V1","V2"),c("Q","P"))


    ggplot(mapping = aes(x = Q, y = P)) +
      geom_line(data = T1, color = "red", size = 1) + 
      geom_path(data = D0, color = "blue", size = 1) +
      geom_line(data = Q1, color = "green") +
      geom_line(data = Q2, color = "green")

标签: rfunctionggplot2

解决方案


您可以ggplot2::stat_function用来绘制任意函数。我认为您的帖子中可能存在拼写错误-如果看起来正确,请告诉我。

library(ggplot2)

df = data.frame(Q = 0:200,
                MC = c(rep(.794, 71),
                       rep(.956, 70),
                       rep(2.802, 60)))

ggplot(df, aes(x = Q)) + 
  geom_path(aes(y = MC)) +
  stat_function(fun = function(Q) {(Q/199)^-0.14})

在此处输入图像描述


推荐阅读