利用matplotlib库中pcolormesh作彩图
在做Learning from data课本习题4.4的时候,需要作彩图,对matplotlib中pcolormesh专门研究了下,
这里详细记录一波,其实这部分作图和之前隐函数作图的流程非常相似,可以从后面看到。
首先看个最简单的图。
import matplotlib.pyplot as plt
import numpy as np
#定义点的数量
n=500
#作点
x=np.linspace(-10,10,500)
y=np.linspace(-10,10,500)
#构造点
X,Y=np.meshgrid(x,y)
Z=np.sin(X+Y)
#作图
plt.pcolormesh(X,Y,Z)
plt.show()
整个流程和隐函数是基本一致的,接下来看一些参数,参数还是非常多的,这里主要介绍cmap,vmin,vmax,
除此之外,还会介绍colorbar方法,下面分别看下。
cmap参数
cmap参数是设置颜色,设置方法是首先利用plt.cm.get_cmap设置样式,然后将这个样式传递给pcolormesh,具体的颜色类型可以参考官网
https://matplotlib.org/examples/color/colormaps_reference.html
这里演示两种样式。
cm=plt.cm.get_cmap('rainbow')
plt.pcolormesh(X,Y,Z,cmap=cm)
plt.show()
cm=plt.cm.get_cmap('flag')
plt.pcolormesh(X,Y,Z,cmap=cm)
plt.show()
vmin,vmax参数与colorbar
vmin,vmax也是设置颜色的参数,在解释之前,我们先使用colorbar方法看下颜色对应的数值,使用方法很简单,
只要在plt.show()之前使用plt.colorbar()即可。
cm=plt.cm.get_cmap('rainbow')
plt.pcolormesh(X,Y,Z,cmap=cm)
plt.colorbar()
plt.show()
右侧的colorbar表示颜色对应的数值,有了这个colorbar,就可以很方便的解释vmin,vmax。vmin,vmin可以控制颜色对应的数值的上下限,
设置之后会对原图产生一定的变化,个人理解是辨析度的区别,下面看下。
cm=plt.cm.get_cmap('rainbow')
plt.pcolormesh(X,Y,Z,cmap=cm,vmin=-0.2,vmax=0.2)
plt.colorbar()
plt.show()
cm=plt.cm.get_cmap('rainbow')
plt.pcolormesh(X,Y,Z,cmap=cm,vmin=-2,vmax=2)
plt.colorbar()
plt.show()
感觉这个功能不必要深纠,只要知道使用方法即可。
自定义函数作图
之前作图是使用numpy自带的函数,如果我们要使用自己的函数该如何操作呢?其实也不难,只要明白我们需要构造一个二维数组即可。
这里举个具体的例子,假设x=[1,2,3],y=[1,2],那么一共有6个格点,f为我们的函数,我们只要构造z,使得z[i][j]=f(i,j)即可,如果这里f(x,y)=x+y,那么我们的数组z=[[2,3,4],[3,4,5]],下面从一个具体例子中看一下。
import matplotlib.pyplot as plt
import numpy as np
#定义点的数量
n=500
#作点
x=np.linspace(-30,30,500)
y=np.linspace(-30,30,500)
#构造点
X,Y=np.meshgrid(x,y)
Z=[]
def f(x,y):
return x*np.sin(x)+y**2
for i in y:
z=[]
for j in x:
z.append(f(j,i))
Z.append(z)
plt.pcolormesh(X,Y,Z,edgecolors='face')
plt.show()