python画曲线的趋势线_Python绘图笔记:绘制有趋势线的直方图、小提琴图和误差图...

1.小提琴图和箱线图

#同时绘制箱线图和小提琴图,箱线图清楚地展示了所绘制的数据集中的四分位数和离群点#小提琴图则清晰展示了数据集中的分布情况import matplotlib.pyplot as pltimport numpy as np#生成图纸,绘制一行两列两个子图,图纸的尺寸设置fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(8,4))#生成导入数据,符合正态分布,(均值,标准差,生成数据的个数),标准差遍历6,7,8,9(range(6,10))some_data=[np.random.normal(0,std,100) for std in range(6,10)]#绘制第一幅子图:小提琴图。要绘制的数据集就是some_data#showmeans:是否显示均值,showextrema:是否显示极值,showmedians:是否显示中位数axes[0].violinplot(some_data,showmeans=True,showmedians=True)axes[0].set_title('xiaotiqin plot')#箱线图axes[1].boxplot(some_data)axes[1].set_title('xiangxian plot')#对两幅图的坐标轴细节进行设置for ax in axes:#显示横向网格线 ax.yaxis.grid(True) ax.set_xticks([y+1 for y in range(len(some_data))]) ax.set_xlabel('xlabel') ax.set_ylabel('ylabel')#用setp()命令来进行设置,该命令可以对一个列表或者单个对象进行设置#对坐标轴上的刻度和刻度标签进行设置plt.setp(axes,xticks=[y+1 for y in range(len(some_data))], xticklabels=['x1','x2','x3','x4'])plt.show()

bd3eb13533fa828b499df3b587ecad30960a5a26.jpeg?token=4980f05f9569d8ea76ad5049959414a2&s=B9285A32979749CA5C7165D20000D0B2figure1

2.简单误差图

import numpy as npimport matplotlib.pyplot as plt#x:起始点,终止点,步长;设置y公式,使x,y关联起来x=np.arange(0.0,5,0.5)y=np.exp(-x**0.5)#生成图纸fig,ax=plt.subplots()#绘制误差图,xerr表示横向的左右偏差,yerr表示纵向的上下偏差#没有进行具体设定的情况下,左右偏差一致;上下误差一致ax.errorbar(x,y,xerr=0.4,yerr=0.6)plt.show()

f31fbe096b63f6246a54ec78fdb707fc1b4ca3bc.jpeg?token=e4ca522aec0f8d6afc22a035fdd03b85&s=58223C72ABC66C4B444C18D20000D0B3figure2

3.复杂一些的误差图

import numpy as npimport matplotlib.pyplot as plt#生成x数据集,y公式,横向误差和纵向误差x=np.array([0.4,0.9,1.4,1.9,2.4,2.9,3.4,3.9,4.4,4.9])y=np.exp(-x**2)xerr=0.2yerr=0.3#设置误差的上下限以及需要绘制的曲线的类型lolims=np.array([0,1,0,1,1,0,1,0,1,1],dtype=bool)uplims=np.array([1,0,1,0,1,0,0,1,0,1],dtype=bool)linestyle='dotted'#生成图纸,绘制子图,设置图纸大小fig,ax=plt.subplots(figsize=(6,5))#绘制一幅标准的误差图,位于整个图片的最下方ax.errorbar(x,y,xerr,yerr,linestyle=linestyle)#绘制一幅比上一幅图y轴方向高一个单位(y+1)的误差图(x轴坐标相同)#以下绘图依次类推,这幅图包含了误差上限ax.errorbar(x,y+1,xerr,yerr,uplims=uplims,linestyle=linestyle)#第三幅包含了误差下限ax.errorbar(x,y+2,xerr,yerr,lolims=lolims,linestyle=linestyle)#第四幅图包含了误差的上下限,并设置了标记ax.errorbar(x,y+3,xerr,yerr,lolims=lolims,uplims=uplims,linestyle=linestyle,marker='o',markersize=6)#shape函数是numpy.core.fromnumeric中的函数,它的功能是读取矩阵的长度xerr=0.3yerr=np.zeros(x.shape)+0.3yerr[[3,6]]=0.4#通过修改以前的数据来模拟一些限制xlowerlims=lolimsxupperlims=uplimslolims=np.zeros(x.shape)uplims=np.zeros(x.shape)lolims[[6]]=Trueuplims[[6]]=True#正常显示中文,针对标题plt.rcParams['font.sans-serif'] = ['SimHei']ax.errorbar(x,y+4,xerr,yerr,lolims=lolims,uplims=uplims, xlolims=lolims,xuplims=uplims,linestyle='none', marker='o',markersize=6)ax.set_xlim((0,6))ax.set_title('误差条形图的上下限')plt.show()

7af40ad162d9f2d30b2c75d6d31f66176227ccc6.jpeg?token=93f533646df7877ff278f01c2cf89be5&s=58A63D7201CF414B54F0E9DA0000C0B1figure3

4.带有趋势线的直方图

import numpy as npimport matplotlib.mlab as mlabimport matplotlib.pyplot as plt#作用:使得随机数据可预测。设置相同的seed,每次生成的随机数相同。# 如果不设置seed,则每次会生成不同的随机数np.random.seed(0)#设置正态分布的均值和标准差,mu = 200sigma = 25#在均值周围产生符合正态分布的x值x = mu + sigma * np.random.randn(437)num_bins = 50#生成图纸fig, ax = plt.subplots()#输入直方图的绘图数据:#直方图函数,x为x轴的值,normed=1表示为概率密度,即和为一# 深蓝色方块,透明度参数0.8.返回n个概率,直方块左边线的x值,及各个方块对象n, bins, patches = ax.hist(x, num_bins, normed=1,facecolor='darkblue', alpha=0.8)#增加一条最佳的趋势线y = mlab.normpdf(bins, mu, sigma)ax.plot(bins, y, '--')ax.set_xlabel('Smarts')ax.set_ylabel('Probability density')ax.set_title(r'Histogram of IQ: $\mu=200$, $\sigma=25$')#自动调整子图参数,使之填充整个图像区域fig.tight_layout()plt.show()

09fa513d269759ee73dc2abbc808af126c22df2e.jpeg?token=445778e298e9a85574e6a854fb9c540f&s=4BA0346200E4F8ACA3B582C70200F0AFfigure4

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值