1. 程式人生 > >用python畫價格—需求曲線圖

用python畫價格—需求曲線圖

今天小老婆給我抱怨說複習得很累,寫了特別多的東西。突然跟我說她有點想用Word寫筆記,但是她不會畫圖(其實會畫也比手寫花時間)。然後我讓她給我發了一下她畫的圖(微觀經濟學的圖)就是這樣的
這裡寫圖片描述
然後我感覺以我水平應該可以用python畫一下這個圖。
說幹就幹。

import matplotlib.pyplot as plt
import numpy as np
from pylab import *
from scipy import interpolate

#一個小函式
def demand_curve(x, a, c):
    return 5*(x-a)**(2)+c

#設定編碼,讓中文可以在圖上顯示
mpl.rcParams['font.sans-serif'] = ['SimHei'] #開啟一個視窗,num設定子圖數量,figsize設定視窗大小,dpi設定解析度 fig = plt.figure(num=1, figsize=(15, 8),dpi=80) plt.title("送給小老婆", {"size":24}) #這是和L1相切的無差異曲線 x = np.arange(0, 0.2, 0.01) y = demand_curve(x, 0.3, 0.6) plt.plot(x, y, linestyle="--") #這是和L2相切的無差異曲線 x = np.arange(0.5,0.7
,0.01) y = demand_curve(x, 0.7, 0.35) plt.plot(x, y, linestyle="--") #這是和L3相切的無差異曲線 x = np.arange(1.1,1.3,0.01) y = demand_curve(x, 1.25, 0.3875) plt.plot(x, y, linestyle="--") #這是三條切線 plt.plot([0,0.5],[1,0], label="L1", linestyle="-") plt.plot([0,1],[1,0], label="L2", linestyle="-") plt.plot([0,2],[1,0], label="L3"
, linestyle="-") #這是三條無差異曲線和切線的切點以及一個額外點表示價格-消費曲線,這裡我用線性插值的方式把價格-消費曲線補全 x = np.array([0.1, 0.6, 1.2, 1.5]) y = np.array([0.8, 0.4, 0.4, 0.5]) xnew = np.arange(0.1,1.5,0.01) func = interpolate.interp1d(x, y, kind='quadratic') ynew = func(xnew) plt.plot(xnew,ynew,label="價格-消費曲線",linestyle="-.") #這是三個切點 plt.plot(0.1, 0.8, 'rs', 0.6, 0.4, 'bs', 1.2, 0.4, 'ys') #這些是圖例以及座標軸顯示範圍 plt.legend(["U1", "U2", "U3", "L1", "L2", "L3","價格-消費曲線", "A", "B", "C"], loc=0, ncol=2, prop={"size":20}) plt.xlim(0,2.2) plt.ylim(0,1.2) plt.xlabel("食物(單位/月)",{"size":20}) plt.ylabel("衣服(單位/月)",{"size":20}) #讓座標軸刻度隱身 plt.xticks([]) plt.yticks([]) #顯示繪圖結果 plt.show()

最後就是跑一下,得到的圖是這樣的
這裡寫圖片描述
看上去還不錯,給小老婆發一下她也說不錯。美滋滋