正文
绘制连续误差图
有时候需要展示连续变量的误差,matplotlib通过plt.plot和plt.fill_between来实现。下面通过Scikit-Learn程序库的API里面的高斯过程回归方法来演示。这是用一种非常灵活的非参数方程对带有不确定性的连续测量变量进行拟合的方法。
# -*- coding: utf-8 -*-""" Created on Tue Oct 30 18:46:30 2018 @author: Administrator """%reset -f %clear# In[*]%matplotlib inlineimport matplotlib.pyplot as plt plt.style.use('seaborn-whitegrid')import numpy as npfrom sklearn.gaussian_process import GaussianProcess# In[*]# define the model and draw some datamodel = lambda x: x * np.sin(x) xdata = np.array([1, 3, 5, 6, 8]) ydata = model(xdata)# Compute the Gaussian process fitgp = GaussianProcess(corr='cubic', theta0=1e-2, thetaL=1e-4, thetaU=1E-1, random_start=100) gp.fit(xdata[:, np.newaxis], ydata) xfit = np.linspace(0, 10, 1000) yfit, MSE = gp.predict(xfit[:, np.newaxis], eval_MSE=True) dyfit = 2 * np.sqrt(MSE) # 2*sigma ~ 95% confidence region
我们现在有xfit,yfit和dyfit,它们可以对我们的数据进行连续拟合。 我们可以将这些传递给plt.errorbar函数,如上所述,但我们真的不想用1000个错误条绘制1,000个点。 相反,我们可以使用浅色的plt.fill_between函数来显示这个连续错误:
# In[*]# Visualize the resultplt.plot(xdata, ydata, 'or') plt.plot(xfit, yfit, '-', color='gray') plt.fill_between(xfit, yfit - dyfit, yfit + dyfit, color='gray', alpha=0.2) plt.xlim(0, 10);
注意我们在这里用fill_between函数完成的工作:传递一个x值,然后是Y轴下边界,然后是Y轴上边界,结果是这些区域之间的区域被填充。
直方图,数据区间和密度
一般直方图来用于显示数据的分布
# -*- coding: utf-8 -*-""" Created on Tue Oct 30 18:46:30 2018 @author: Administrator """%reset -f %clear# In[*]%matplotlib inlineimport numpy as npimport matplotlib.pyplot as plt plt.style.use('seaborn-white') data = np.random.randn(1000) plt.hist(data);
# In[*]plt.hist(data, bins=30, normed=True, alpha=0.5, histtype='stepfilled', color='#E41A1C', edgecolor='none');
可以将histtype='stepfilled'与透明设置参数alpha搭配使用
# In[*] x1 = np.random.normal(0, 0.8, 1000) x2 = np.random.normal(-2, 1, 1000) x3 = np.random.normal(3, 2, 1000) kwargs = dict(histtype='stepfilled', alpha=0.8, normed=True, bins=40) plt.hist(x1, **kwargs) plt.hist(x2, **kwargs) plt.hist(x3, **kwargs);
配置图例
图例赋予可视化意义,为各种元素指定意义。 我们已经知道如何创建一个简单的图例; 在这里,我们将介绍如何在Matplotlib中自定义图例的位置和其他。可以使用plt.legend()命令创建最简单的图例,该命令会自动为任何标记的绘图元素创建图例:
# -*- coding: utf-8 -*-""" Created on Tue Oct 30 18:46:30 2018 @author: Administrator """%reset -f %clear# In[*]import matplotlib.pyplot as plt plt.style.use('seaborn-whitegrid') %matplotlib inlineimport numpy as np x = np.linspace(0, 10, 1000) fig, ax = plt.subplots() ax.plot(x,np.sin(x), "#377EB8", label='Sine') ax.plot(x,np.cos(x), "#E41A1C", label='Cosine') ax.axis('equal') leg = ax.legend();
# In[*]import matplotlib.pyplot as plt plt.style.use('seaborn-whitegrid') %matplotlib inlineimport numpy as np x = np.linspace(0, 10, 1000) fig, ax = plt.subplots() ax.plot(x,np.sin(x), "#377EB8", label='Sine') ax.plot(x,np.cos(x), "#E41A1C", label='Cosine') ax.axis('equal') leg = ax.legend(loc='upper left',frameon=False);
还可以定义圆角边框(fancybox),增加阴影,改变外边框透明度(framealpha值),或者改变文字间距
作者:夜神moon
链接:https://www.jianshu.com/p/ffaad8c51454
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦