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()

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

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()

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

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()

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

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()

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

你可能感兴趣的:(python画曲线的趋势线)