用ggplot2绘制局部均衡(一个图中有两个函数)

时间:2018-05-16 03:05:40

标签: r function ggplot2

我想使用ggplot2创建一个图形来显示部分均衡问题。我环顾四周寻找解决方案,却找不到一个。

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

  1. 边际成本曲线如下:

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

    1. 逆需求曲线由以下函数描述:
      • P =(199 / Q)^(1 / 0.14)
    2. 我可以绘制边际成本曲线,但我不熟悉使用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")
      

1 个答案:

答案 0 :(得分:1)

您可以使用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})

enter image description here