import matplotlib
import matplotlib.pyplot as plt
import numpy as np
from pylab import mpl
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
plt.rcParams['font.size'] = 13 # 控制字体大小
画单只股票的证劵市场线
plt.figure(figsize=(9,6))
plt.plot(beta,Ri,'r-',label='证券市场线',lw=2.0)
plt.plot(1.0,Rf+1.0*(Rm-Rf),'o',lw=2.5)
plt.axis('tight')
plt.xticks(fontsize=14)
plt.xlabel(u'贝塔值',fontsize=14)
plt.xlim(0.4,2.1)
plt.yticks(fontsize=14)
plt.ylabel(u'单一股票收益率',fontsize=14,rotation=90)
plt.ylim(0.07,0.22)
plt.title(u'资本资产定价模型',fontsize=14)
plt.annotate(u'贝塔等于1的收益',fontsize=14,xy=(1.0,0.12),xytext=(0.8,0.15),arrowprops=dict(facecolor='b',shrink=0.05))
plt.legend(loc=0,fontsize=14)
plt.grid()
这里有一点,ylabel()书中是rotation=0时文字是垂直的,但是在实践中发现设定为90时,文字才是垂直的。
import pandas as pd
HS300_new=pd.read_excel('/Users/lin/Desktop/dataset/数据/第五章/沪深300指数(2016-2018).xlsx',sheet_name="Sheet1",header=0,index_col=0)
plt.figure(figsize=(11,9))
plt.subplot(2,2,1) #代表第一行第一列的子图
plt.plot(HS300_new['开盘点位'],'r-',label=u'沪深300开盘点位',lw=2.0)
plt.xticks(fontsize=14,rotation=30)
plt.xlabel(u'日期',fontsize=13)
plt.yticks(fontsize=13)
plt.ylabel(u'点位',fontsize=13,rotation=90)
plt.legend(loc=0,fontsize=13)
plt.grid()
plt.subplot(2,2,2) #代表第一行第2列的子图
plt.plot(HS300_new['最高点位'],'b-',label=u'沪深300最高点位',lw=2.0)
plt.xticks(fontsize=14,rotation=30)
plt.xlabel(u'日期',fontsize=13)
plt.yticks(fontsize=13)
plt.ylabel(u'点位',fontsize=13,rotation=90)
plt.legend(loc=0,fontsize=13)
plt.grid()
plt.subplot(2,2,3) #代表第2行第1列的子图
plt.plot(HS300_new['最低点位'],'c-',label=u'沪深300最低点位',lw=2.0)
plt.xticks(fontsize=14,rotation=30)
plt.xlabel(u'日期',fontsize=13)
plt.yticks(fontsize=13)
plt.ylabel(u'点位',fontsize=13,rotation=90)
plt.legend(loc=0,fontsize=13)
plt.grid()
plt.subplot(2,2,4) #代表第2行第1列的子图
plt.plot(HS300_new['收盘点位'],'k-',label=u'沪深300收盘点位',lw=2.0)
plt.xticks(fontsize=14,rotation=30)
plt.xlabel(u'日期',fontsize=13)
plt.yticks(fontsize=13)
plt.ylabel(u'点位',fontsize=13,rotation=90)
plt.legend(loc=0,fontsize=13)
plt.grid()