本期,我们将详细学习matplotlib 绘制等高线图相关属性的学习,let's go~
等高线图绘制需要借助很多高中所学的三角函数、指数函数等公式,我们本期案例使用等高线方法汇总圆
案例数据准备
np.arrage()准备一系列连续的数据
np.meshgrid()将数据转换成矩阵
import numpy as np # 定义一组连续的数据 x_value = np.arange(-5,5,0.1) y_value = np.arange(-5,5,0.1) # 转换成矩阵数据 x,y = np.meshgrid(x_value,y_value)
绘制等高线
import matplotlib.pyplot as plt plt.contour(x,y,z) plt.title("Display Contour") plt.xlabel("x(m)") plt.ylabel("y(m)") plt.show() plt.show()
关键字:colors
取值范围:
关键字:alpha
默认为1
取值范围为:0~1
关键字:cmap
colors和cmap两个关键字不能同时提供
取值为:注册的颜色表明
关键字:linewidths
默认为等高线宽度为1.5
取值可以float类型或者列表
关键字:linestyles
默认值为:solid
取值可选:{None, 'solid', 'dashed', 'dashdot', 'dotted'}
linestyles为None且线条为单色时,负轮廓的线条会设置成dashed
我们对上一节的等高线图添加一些属性
线条为红色,线条宽度逐渐增大,线条样式为dashed,透明度设置为0.5
```python plt.contour(x,y,z,colors="r", linestyles="dashed", linewidths=np.arange(0.5,4,0.5),alpha=0.5) ```
传入colors列表
plt.contour(x,y,z, colors=('r','green','blue',(1,1,0),"#afeeee","0.5"), linewidths=np.arange(0.5,4,0.5))
为等高线图,设置cmap为红色系
z = np.exp(-x**2-y**2) z1 = np.exp(-(x-1)**2-(y-1)**2) Z = (z-z1)*2 plt.contour(x,y,Z, cmap='afmhot_r', linewidths=np.arange(0.5,4,0.5))
我们查看等高线图时,轮廓标签会辅助我们更好的查看图表。添加轮廓标签,我们需要借助clabe
x_value = np.arange(-3,3,0.025) y_value = np.arange(-3,3,0.025) x,y = np.meshgrid(x_value,y_value) z = (1-x**2+y**5)*np.exp(-x**2-y**2) cs = plt.contour(x,y,z,cmap="Blues_r",linewidths=np.arange(0.5,4,0.5)) plt.clabel(cs,fontsize=9,inline=True)
通常在等高线图中,不同区域填充不一样的颜色,帮助我们查看图表时更好地理解
使用pyplot.contourf()对比同区域轮廓进行填充颜色
z = (1-x**2+y**5)*np.exp(-x**2-y**2) cs = plt.contour(x,y,z,10,colors="b",linewidths=0.5) plt.clabel(cs,fontsize=12,inline=True) plt.contourf(x,y,z,10,cmap="Blues_r",alpha=0.75)
我们可以借助pyplot.colorbar()方法来添加颜色条说明
z = (x**2+y**5)*np.exp(-x**2-y**2) z1 = np.exp(-(x-1)**2-(y-1)**2) Z = (z-z1)*2 cs = plt.contour(x,y,Z,10,colors="black",linewidths=0.5) plt.clabel(cs,fontsize=12,inline=True) plt.contourf(x,y,Z,10,cmap="afmhot_r",alpha=0.5) plt.colorbar(shrink=0.8)
本期对matplotlib.pyplot 绘制等高线方法contour和contourf相关属性的学习。在绘制等高线图时,我们需要对三角函数、指数函数、正余弦函数等知识有一点了解,才能绘制出想要的图表
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
长按识别二维码并关注微信
更方便到期提醒、手机管理