Python科学计算:绘图

文章介绍了使用matplotlib进行数据可视化的几个高级技巧,包括散点图的多种用法,如自定义点的颜色和大小;利用errorbar和plot结合展示连续误差;使用contour和contourf创建密度和轮廓图;以及绘制莫比乌斯带等三维图形。此外,示例中还展示了如何用matplotlib处理机器学习中的鸢尾花数据集。
摘要由CSDN通过智能技术生成

之前我跟着书上的讲解,学习了二维和三维的一些绘图方法,后面画自己的东西的时候也用上了一些,感觉还是不错的,但是当我感觉我对matplotlib模块已经有了一个大致的了解的时候,现实突然敲醒了我,还早呢,才学了些皮毛,今天早上在一个公众号上看到了一些使用matplotlib库的其他方法,就来和大家分享一下,也同样是自己的一种积累。

一、散点图:

这个主要用到的是scatter函数,用个最简单的例子来看看:

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,10,100)
y=np.cos(np.sin(x))
fig=plt.figure()
ax=fig.add_subplot(1,1,1)
ax.scatter(x,y,marker="o",color="r")
plt.show()
图1:散点图

(左下角的不适用那个是我屏幕的问题,和程序没有半毛钱关系) scatter函数和plot函数的区别在于,scatter函数可以针对每个点设置不同属性,然后我们还可以通过数据集合对这些属性进行设置:

r=np.random.RandomState(0)
x=np.abs(r.randn(100))
y=np.abs(r.randn(100))
colors=np.abs(r.randn(100))
sizes=np.abs(1000*r.randn(100))
plt.scatter(x,y,c=colors,s=sizes,alpha=0.3,cmap='viridis')
plt.colorbar()
plt.show()
图2:散点图2

 你别说,你还真别说,挺好看的。

前两天学机器学习的时候,里面有一个鸢尾花集,来看看绘制鸢尾花集的方法:

import matplotlib.pyplot as plt
import numpy as np
from sklearn.datasets import load_iris
iris=load_iris()
features=iris.data.T
plt.scatter(features[0],features[1],alpha=0.2,s=100*features[3],c=iris.target,cmap='viridis')
plt.xlabel(iris.feature_names[0])
plt.xlabel(iris.feature_names[1])
plt.show()

图3:鸢尾花集

 从这里就可以看出,散点图是可以同时表征数据集的不同维度的特征,这对我们之后展示和分析数据集非常有帮助。

ok

二、连续误差,之前有讲到误差可视化,可以用errorbar函数来绘制误差条,实际上,有些时候可能需要对连续值展示误差条,我们可以将plot和fill_between两个函数结合在一起来实现,具体展示的话,有一个高斯过程回归方法的例子,来看一下:

import matplotlib.pyplot as plt
import numpy as np
# from sklearn.datasets import load_iris
from sklearn.gaussian_process import GaussianProcessRegressor
model=lambda x:x*np.sin(x)
xdata=np.array([1,3,5,6,8])
ydata=model(xdata)
# 计算高斯回归过程
gp=GaussianProcessRegressor()
gp.fit(xdata[:,np.newaxis],ydata)
xfit=np.linspace(0,10,1000)
yfit,std=gp.predict(xfit[:,np.newaxis],return_std= True)
dyfit=2*std
plt.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)
plt.show()
图4:连续误差
​​​​

 三、画一个密度和轮廓图,contour可以绘制轮廓,contourf可以填充区域颜色,这和matlab里面的函数差不多,我就不用他公众号上给出的例子了,直接用我之前的一个例子:

data=np.genfromtxt("I:out/wavesPhoto/250step.data")
plt.contour(data,cmap='gray')
plt.show()

做的一个很简单的波场快照:

图4:波场快照

 把contour改成contourf之后,我觉得这个效果比前者更好一些

图5:contourf效果

图6:图5灰度型式

图7:采用"RdGy"色棒的

 嗯???灰度的效果还不错哎,和matlab的效果差不多了。,然后你也可以在后面加一句plt.colorbar()函数,提供一个色棒以供参考。

最后,来一个绘制莫比乌斯带的例子,这个来源于公众号,结尾我会给大家一个这篇文章的链接,

theta=np.linspace(0,2*np.pi,300)
w=np.linspace(-0.25,0.24,8)
w,theta=np.meshgrid(w,theta)
phi=0.5*theta
r=1+w*np.cos(phi)
x=np.ravel(r*np.cos(theta))
y=np.ravel(r*np.sin(theta))
z=np.ravel(w*np.sin(phi))
from matplotlib.tri import triangulation
tri=triangulation.Triangulation(np.ravel(w),np.ravel(theta),triangles=None, mask=None)
ax=plt.axes(projection='3d')
ax.plot_trisurf(x,y,z,triangles=tri.triangles,cmap='viridis',linewidth=0.2)
ax.set_xlim(-1,1)
ax.set_ylim(-1,1)
# ax.set_zlim(-1,1)
plt.show()
图8莫比乌斯环

 行了,大概就是这么些,其实那片博文里面东西挺多的,但是,很多之前就已经写过了,再就不写了,如果有想看那片公众号文章的,这是他的链接:【Python】11种 Matplotlib 科研论文图表教程(附代码)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值