《基于Python的金融分析和风险管理》学习笔记保存——条形图
例子还是以一个包含4支股票的投资组合
![](https://img-blog.csdnimg.cn/direct/a17be908a2a64c149aea1e7da5938460.png)
先将需要的包导入
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 # 控制字体大小
首先创建这个投资组合的数据框
import pandas as pd
stock_return=np.array([[0.003731,0.021066,-0.004854,0.006098,-0.00606],[-0.001838,0.001842,-0.016544,-0.003738,-0.003752],[-0.003087,-0.000344,-0.033391,0.007123,0.004597],[-0.024112,0.011704,-0.029563,-0.01457,0.016129]])
date=['2018-09-03','2018-09-04','2018-09-05','2018-09-06','2018-09-07']
stock=['中国石油','工商银行','上汽集团','宝钢股份']
return_dataframe=pd.DataFrame(data=stock_return.T,index=date,columns=stock)
return_dataframe
输出是图1
下面展示垂直条形图,使用bar()函数
plt.figure(figsize=(12,10))
plt.subplot(2,2,1)
#x=x坐标对应的相关数据,X轴在本列中对应数据框的列(4支股票),height=图形的高度,这个图要画的4个股票在9月3号这天的涨跌幅所以用iloc来选取行,0代表第一行。width代表宽度
plt.bar(x=return_dataframe.columns,height=return_dataframe.iloc[0],width=0.5,label=u'2018年9月3日涨跌幅',facecolor='y')
plt.xticks(fontsize=13)
plt.yticks(fontsize=13)
plt.ylim(-0.035,0.025)
plt.ylabel(u'涨跌幅',fontsize=13,rotation=90)
plt.legend(loc=0,fontsize=13)
plt.grid(True)
plt.subplot(2,2,2)
#9月5日的数据,与上图不同的是,在高度选择时,选第三行,iloc【2】
plt.bar(x=return_dataframe.columns,height=return_dataframe.iloc[2],width=0.5,label=u'2018年9月5日涨跌幅',facecolor='c')
plt.xticks(fontsize=13)
plt.yticks(fontsize=13)
#y轴刻度范围的选择要根据数据的范围来选ylim()
plt.ylim(-0.035,0.025)
plt.ylabel(u'涨跌幅',fontsize=13,rotation=90)
plt.legend(loc=0,fontsize=13)
plt.grid(True)
plt.subplot(2,2,3)
plt.bar(x=return_dataframe.columns,height=return_dataframe.iloc[3],width=0.5,label=u'2018年9月6日涨跌幅',facecolor='b')
plt.xticks(fontsize=13)
plt.yticks(fontsize=13)
plt.ylim(-0.035,0.025)
plt.ylabel(u'涨跌幅',fontsize=13,rotation=90)
plt.legend(loc=0,fontsize=13)
plt.grid(True)
plt.subplot(2,2,4)
plt.bar(x=return_dataframe.columns,height=return_dataframe.iloc[4],width=0.5,label=u'2018年9月7日涨跌幅',facecolor='g')
plt.xticks(fontsize=13)
plt.yticks(fontsize=13)
plt.ylim(-0.035,0.025)
plt.ylabel(u'涨跌幅',fontsize=13,rotation=90)
plt.legend(loc=0,fontsize=13)
plt.grid(True)
水平条形图,使用函数barh()
将不同交易日,不同股票的涨跌幅放置在一张水平条形图上
plt.figure(figsize=(9,6))
#与垂直条形图不同的是,这里用宽度来代表数据的大小
plt.barh(y=return_dataframe.columns,width=return_dataframe.iloc[3],height=0.5,label=u'2018年9月6日涨跌幅')
plt.barh(y=return_dataframe.columns,width=return_dataframe.iloc[4],height=0.5,label=u'2018年9月7日涨跌幅')
plt.xticks(fontsize=13)
plt.xlabel(u'涨跌幅',fontsize=13)
plt.yticks(fontsize=13)
plt.title(u'水平条形图可视化股票的涨跌幅',fontsize=13)
plt.legend(loc=0,fontsize=13)
plt.grid(True)