02金融数据python练习自用保存——直方图

本节主要保存直方图(柱状图)的图形展示。主要参考为《基于Python的金融风险管理》

使用函数为hist()函数

from pylab import mpl
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import pandas as pd
import numpy.random as npr
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']#在图中显示中文
plt.rcParams['font.size'] = 13 # 控制字体大小

随机生成一些样本用来画图

#获取不同分布的随机数
I=1000 #随机抽样的次数
x_norm=npr.normal(loc=0.8,scale=1.5,size=I) #从均值等于0.8,标准差等于1.5的正态分布中抽取样本
x_logn=npr.lognormal(mean=0.5,sigma=1.0,size=I) #从均值等于0.5,标准差等于1.0的对数正态分布中抽取样本
x_chi=npr.chisquare(df=4,size=I)
x_beta=npr.beta(a=2,b=4,size=I)

单一样本的直方图 

plt.figure(figsize=(12,10))
plt.subplot(2,2,1) #代表第一行第一列的子图
plt.hist(x_norm,label=u'正态分布的抽样',bins=20,facecolor='y',edgecolor='k')#直方图,x每个矩形对应的数据,bins表示图中矩形的数量,facecolor矩形的背景颜色,edgecolor矩形的边框颜色
plt.xticks(fontsize=13)#x轴的刻度
plt.xlabel(u'样本值',fontsize=13)
plt.yticks(fontsize=13)
plt.ylabel(u'频数',fontsize=13,rotation=90)
plt.legend(loc=0,fontsize=13)#显示图列,loc图例的位置0最佳,1右上,2左上,3左下,4右下,5右,6中左,7中右,8中下,9中上,10中
plt.grid(True)#网格
#网格
#(axis绘制哪一组网格线,axis=‘x’表示仅绘制x轴的网格线,color颜色,linestyle设置网格线样式,linewidth设置网格线的宽度)
plt.subplot(2,2,2)
plt.hist(x_logn,label=u'对数正态分布的抽样',bins=20,facecolor='r',edgecolor='k')
plt.xticks(fontsize=13)
plt.xlabel(u'样本值',fontsize=13)
plt.yticks(fontsize=13)
plt.ylabel(u'频数',fontsize=13,rotation=90)
plt.legend(loc=0,fontsize=13)
plt.grid(True)
plt.subplot(2,2,3) #代表第2行第1列的子图
plt.hist(x_chi,label=u'卡方分布的抽样',bins=20,facecolor='b',edgecolor='k')
plt.xticks(fontsize=13)
plt.xlabel(u'样本值',fontsize=13)
plt.yticks(fontsize=13)
plt.ylabel(u'频数',fontsize=13,rotation=90)
plt.legend(loc=0,fontsize=13)
plt.grid(True)  
plt.subplot(2,2,4) #代表第2行第1列的子图
plt.hist(x_beta,label=u'贝塔分布的抽样',bins=20,facecolor='c',edgecolor='k')
plt.xticks(fontsize=13)
plt.xlabel(u'样本值',fontsize=13)
plt.yticks(fontsize=13)
plt.ylabel(u'频数',fontsize=13,rotation=90)
plt.legend(loc=0,fontsize=13)
plt.grid(True)  
  

多个样本的直方图(展示画堆叠,并列的直方图)

堆叠的直方图 

x_normal=npr.normal(loc=0.8,scale=1.5,size=(I,2)) #从均值等于0.8,标准差等于1.5的正态分布中抽取样本生成1000行,2列的数组
#堆叠展示
plt.figure(figsize=(8,5))
plt.hist(x_normal,label=[u'正态分布的抽样数组 1',u'正态分布的抽样数组 2'],stacked=True,bins=30,edgecolor='k')#stacked=True代表堆叠展示
plt.xticks(fontsize=13)
plt.xlabel(u'样本值',fontsize=13)
plt.yticks(fontsize=13)
plt.ylabel(u'频数',fontsize=13,rotation=90)
plt.title(u'正态分布随机抽取的两组样本值堆叠的直方图')
plt.legend(loc=0,fontsize=13)
plt.grid(True)

并排的直方图

plt.figure(figsize=(8,5))
plt.hist(x_normal,label=[u'正态分布的抽样数组 1',u'正态分布的抽样数组 2'],bins=30,edgecolor='k')#不加stacked=True,代表并排展示
plt.xticks(fontsize=13)
plt.xlabel(u'样本值',fontsize=13)
plt.yticks(fontsize=13)
plt.ylabel(u'频数',fontsize=13,rotation=90)
plt.title(u'正态分布随机抽取的两组样本值并排的直方图')
plt.legend(loc=0,fontsize=13)
plt.grid(True)

 

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值