Microeconomics:Python画埃奇沃思盒

Microeconomics

Python画埃奇沃思盒

求助:如何用计算机软件画埃奇沃思盒呢?
能附带Python编程最好。谢谢大佬指教。
遇到的问题:总是无法放在一个框内
题目:
在这里插入图片描述
我的代码

import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl

plt.axis([0,40,0,80])
ax1 = plt.gca()
w1 = np.arange(0, 40, 0.1)
b1 = np.arange(0, 80, 0.1)
b1 = -w1 +20
ax1.plot(w1, b1, 'g-')
ax1.set_xlabel('X data')
ax1.set_ylabel('Y1=Morris_books,color=g')
plt.scatter(10,60)

ax2 = plt.subplots
ax2 = plt.gca()
ax2.xaxis.set_ticks_position('top')
ax2.invert_xaxis()
ax2.yaxis.set_ticks_position('right')
ax2.invert_yaxis()
w2 = np.arange(0, 40, 0.1)
b2 = np.arange(0, 80, 0.1)
b2 = 50/ (w2)
ax2.set_xlabel('X data')
ax2.set_ylabel('Y2=Philip_books,color=b,')
plt.scatter(10,60)
ax2.plot(w2, b2, 'b-')

plt.show()

效果图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Now we use another way to figure it out!
Question 1
代码:

import matplotlib.pyplot as plt
import numpy as np
from sympy import *
import math

# 第一问:draw an edgeworth box

u1 = 210
b1 = np.arange(0,80,0.1)
w1 = 1/3*u1 - b1
plt.plot(b1,w1,'g-')

u2 = 1200
b2 = np.arange(0,80,0.1)
w2 = u2 / (2*b2)
b3 = 80 - b2##this
w3 = 40 - w2##this
plt.plot(b3,w3,'b-')

plt.scatter(60,10,c='r')

area = np.pi * 10**2  # 点面积 
plt.scatter(0,0,c='g',marker='*',s=area)
plt.scatter(80,40,c='b',marker='*',s=area)


plt.xlim([0,80])
plt.ylim([0,40])

plt.xlabel('Book')
plt.ylabel('Wine')

plt.legend(['u1=210','u2=1200','endowment','Morris','Philip'],loc=0)
plt.title('Edgeworth_Box')

效果图:
在这里插入图片描述
Question 3
附加代码:

##第三问Contract curve
w4=np.arange(0,40,0.1)
b4=w4+40
plt.plot(b4,w4,'y-',label='contract_curve')

plt.legend(loc=0)

效果图:
在这里插入图片描述
Thank to Sue_Yuan to figure it out!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值