一、contourplot怎么调参数范围
import numpy as np import matplotlib.pyplot as plt #生成数据 x = np.linspace(-5, 5, 50) y = np.linspace(-5, 5, 50) X, Y = np.meshgrid(x, y) Z = np.sin(np.sqrt(X**2 + Y**2)) #调整参数范围 plt.contourf(X, Y, Z, levels=np.linspace(-1,1,20), cmap=plt.cm.hot) C = plt.contour(X, Y, Z, 10, colors='black', linewidth=.5) plt.clabel(C, inline=True, fontsize=10) plt.show()
contourplot函数用于绘制二元函数的等高线图。首先需要准备一组数据,可以使用numpy生成。使用plt.contourf()来绘制等高线图的填充颜色,其中levels参数用于设置颜色分区层数,cmap用于选择配色方案。plt.contour()用于绘制等高线轮廓,其中colors参数用于选择轮廓线颜色,linewidth参数用于设置轮廓线粗细。plt.clabel()用于绘制轮廓线标签,其中inline参数用于控制标签是否放置在线内部,fontsize用于控制标签的字体大小。
二、contourplot函数
import numpy as np import matplotlib.pyplot as plt #生成数据 x = np.linspace(-5, 5, 50) y = np.linspace(-5, 5, 50) X, Y = np.meshgrid(x, y) Z = np.sin(np.sqrt(X**2 + Y**2)) #绘制等高线图 plt.contour(X, Y, Z, 10, colors='black') plt.show()
可以看到,contourplot函数绘制的是等高线轮廓,由于没有填充颜色,图像较为简洁。
三、contourplot比例
import numpy as np import matplotlib.pyplot as plt #生成数据 x = np.linspace(-5, 5, 50) y = np.linspace(-5, 5, 50) X, Y = np.meshgrid(x, y) Z = np.sin(np.sqrt(X**2 + Y**2)) #不等比例绘图 fig, ax = plt.subplots() a = .8 fig.set_size_inches(a*6.4, a*4.8) ax.contourf(X, Y, Z, levels=np.linspace(-1,1,20), cmap=plt.cm.hot) C = ax.contour(X, Y, Z, 10, colors='black', linewidth=.5) ax.clabel(C, inline=True, fontsize=10) plt.show()
可以使用fig.set_size_inches()函数自定义图片比例,其中参数a为缩放比例。为了保持等比例绘图,x轴的长度应该为y轴长度的1.33倍。
四、contourplot3d
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D #生成数据 x = np.linspace(-5, 5, 50) y = np.linspace(-5, 5, 50) X, Y = np.meshgrid(x, y) Z = np.sin(np.sqrt(X**2 + Y**2)) #绘制3D图像 fig = plt.figure() ax = fig.gca(projection='3d') ax.plot_surface(X, Y, Z, cmap=plt.cm.hot) plt.show()
以上是contourplot函数绘制三维图像的基本方法,通过设置参数projection=’3d’来告诉Python需要绘制3D图像,然后使用ax.plot_surface()函数来绘制3D图像。
五、contourplot3D函数
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D #生成数据 x = np.linspace(-5, 5, 50) y = np.linspace(-5, 5, 50) X, Y = np.meshgrid(x, y) Z = np.sin(np.sqrt(X**2 + Y**2)) #绘制3D等高线图 fig = plt.figure() ax = fig.gca(projection='3d') ax.contour(X, Y, Z, 10, cmap=plt.cm.hot) plt.show()
contourplot3D函数使用方法类似于contourplot函数,只不过是用于绘制3D等高线图而不是3D图像。其中,levels参数用于设置颜色分区层数,cmap用于选择配色方案。
六、contourplot和plot区别
import numpy as np import matplotlib.pyplot as plt #生成数据 x = np.linspace(-5, 5, 50) y = np.linspace(-5, 5, 50) X, Y = np.meshgrid(x, y) Z = np.sin(np.sqrt(X**2 + Y**2)) #绘制等高线图和曲面图 fig = plt.figure() ax1 = fig.add_subplot(121) ax2 = fig.add_subplot(122, projection='3d') ax1.contour(X, Y, Z, 10, colors='black') ax2.plot_surface(X, Y, Z, cmap=plt.cm.hot) plt.show()
可以看到,contourplot和plot的区别在于contourplot绘制出的是等值线图,plot则直接绘制出了曲面。在上方示例中,使用contourplot和plot绘制出了等高线图和曲面图。
七、contourplot函数有地方画不出来
使用一些特殊函数,比如圆锥线(z^2=x^2+y^2)这种函数,contourplot函数就无法进行绘制,因为这些函数出现奇点。这种情况下,需要使用contourplot3D函数。
八、contourplot3D函数画奇点
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D #生成数据 x = np.linspace(-1, 1, 100) y = np.linspace(-1, 1, 100) X, Y = np.meshgrid(x, y) Z = X ** 2 + Y ** 2 #绘制图像 fig = plt.figure() ax = fig.gca(projection='3d') ax.plot_surface(X, Y, Z, cmap=plt.cm.hot) plt.show()
在contourplot3D函数中无法绘制出奇点,需要使用plot_surface()函数进行曲面绘制,该函数应该是基于颜色填充的方法绘图,因此不会出现奇点。
九、contourplot函数局部不能画
在contourplot函数中一些函数局部变化较为复杂,造成函数在局部无法使用等高线的方法表示。这种时候,可以考虑将总体分为两个部分,一部分进行等高线表示,一部分进行平面表示。
import numpy as np import matplotlib.pyplot as plt #生成数据 x = np.linspace(-1, 1, 1000) y = np.linspace(-1, 1, 1000) X, Y = np.meshgrid(x, y) Z = X ** 2 - Y ** 2 #绘制图像 fig = plt.figure() ax1 = fig.add_subplot(121) ax2 = fig.add_subplot(122) #等高线表示 ax1.contour(X, Y, Z, 5, colors='black') #平面表示 x_subs = np.linspace(-1, 1, 100) y_subs = np.linspace(-.01, .01, 100) X_subs, Y_subs = np.meshgrid(x_subs, y_subs) ax2.plot_surface(X_subs, Y_subs, X_subs ** 2 - Y_subs ** 2, cmap=plt.cm.hot) plt.show()
如上图所示,将函数分别进行等高线和平面表示,可以获得更加精细的图像,细节表现会更好。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/154795.html