(九)用Matplotlib画直方图和条形图

根据不同分布的随机数绘制直方图

import numpy.random as npr
norm=npr.normal(1,1,1000);beta=npr.beta(a=2,b=4,size=1000)
plt.figure(figsize=(12,6))
plt.subplot(121)
plt.hist(norm,label='正态分布样本值',bins=30,facecolor='c',edgecolor='k')
plt.xlabel('样本值')
plt.ylabel('频数')
plt.legend()
plt.grid()
plt.subplot(122)
plt.hist(beta,label='贝塔分布样本值',bins=30,facecolor='c',edgecolor='k')
plt.xlabel('样本值')
plt.ylabel('频数')
plt.legend()
plt.grid()

在这里插入图片描述

同一坐标系中比较不同分布的直方图

normdf=pd.Series(npr.normal(0,1,1000))#将array转换为序列
logdf=pd.Series(npr.lognormal(0,1,1000))
a=pd.concat([normdf,logdf],axis=1)#合并成一个数据框
a.columns=['正态分布样本','对数正态分布样本']#修改两列的名称
a=a.values#数据框转换为array数组
plt.figure(figsize=(8,6))
plt.hist(a,label=['正态分布样本','对数正态分布样本'],bins=200,stacked=False)
#堆叠展示,stacked=False表示水平重叠
plt.xlabel('样本值')
plt.ylabel('频数')
plt.title('两分布抽样比较')
plt.legend()
plt.grid()

在这里插入图片描述

垂直条形图

sid=['股票a','股票b','股票c','股票d']
date=['2018-09-03','2018-09-04','2018-09-05','2018-09-06','2018-09-07']
stock=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]])
stockre=pd.DataFrame(stock,sid,date).T
stockre
Out[29]: 
                 股票a       股票b       股票c       股票d
2018-09-03  0.003731 -0.001838 -0.003087 -0.024112
2018-09-04  0.021066  0.001842 -0.000344  0.011704
2018-09-05 -0.004854 -0.016544 -0.033391 -0.029563
2018-09-06  0.006098 -0.003738  0.007123 -0.014570
2018-09-07 -0.006060  0.003752  0.004597  0.016129
plt.figure(figsize=(12,6))
plt.subplot(211)
plt.bar(x=stockre.columns,height=stockre.iloc[0],label='9月3日涨跌幅')
#x和hight分别表示x坐标对应的数据及条形图高度
plt.ylabel('涨跌幅')
plt.title('不同股票涨跌幅比较')
plt.legend()
plt.grid()
plt.subplot(212)
plt.bar(x=stockre.columns,height=stockre.iloc[3],label='9月6日涨跌幅')
plt.ylabel('涨跌幅')
plt.title('不同股票涨跌幅比较')
plt.legend()
plt.grid()

在这里插入图片描述

发布了31 篇原创文章 · 获赞 2 · 访问量 1614

猜你喜欢

转载自blog.csdn.net/hzk427/article/details/104024215