Python+matplotlib实现绘制等高线图示例详解
在matplotlib.pyplot中除了可以绘制常规图表如折线、柱状、散点等,还可以绘制常用在地理上的平面展示地型的等高线图,本文主要为大家介绍了如何利用matplotlib绘制等高线图,需要的可以参考一下
目录
前言
1. 等高线图概述
什么是等高线图?
等高线图常用场景
绘制等高线图步骤
案例展示
2. 等高线图属性
设置等高线颜色
设置等高线透明度
设置等高线颜色级别
设置等高线宽度
设置等高线样式
3. 显示轮廓标签
4. 填充颜色
5. 添加颜色条说明
总结
前言
我们在往期对matplotlib.pyplot()方法学习,到现在我们已经会绘制折线图、柱状图、散点等常规的图表啦(往期的内容如下,大家可以方便查看往期内容)
Python matplotlib底层原理解析
Python利用 matplotlib 绘制直方图
Python用 matplotlib 绘制柱状图
python 用matplotlib绘制折线图详情
在matplotlib.pyplot 中除了可以绘制常规图表如折线、柱状、散点等,还可以绘制常用在地理上的平面展示地型的等高线图
本期,我们将详细学习matplotlib 绘制等高线图相关属性的学习,let's go~
1. 等高线图概述
什么是等高线图?
等高线图又称为水平图,通过2D形式展示3D图像的图表
等高线图又称为等高地线图,将地表高度相同的点连成一个环线展示到平面曲线上
等高线图又称为Z切片图,因变量Z与自变量X,Y变化而变化
等高线图可以分为首曲线、计曲线、间曲线与助曲线
等高线图常用场景
等高线图常用在展示某地地形情况
等高线图也可以计算当地山地高低情况
等高线图常用于地质、地理勘察绘制而成
等高线图也可以用于绘制圆形、椭圆形等数学公式展示
绘制等高线图步骤
导入matplotlib.pyplot模块
准备数据,可以使用numpy/pandas整理数据
调用pyplot.contour()或者pyplot.contourf()绘制等高线
案例展示
等高线图绘制需要借助很多高中所学的三角函数、指数函数等公式,我们本期案例使用等高线方法汇总圆
案例数据准备
np.arrage()准备一系列连续的数据
np.meshgrid()将数据转换成矩阵
1 2 3 4 5 6 7 8 | 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) |
绘制等高线
1 2 3 4 5 6 7 8 9 10 | 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() |
2. 等高线图属性
设置等高线颜色
关键字:colors
取值范围:
表示颜色的英文单词:如红色"red"
表示颜色单词的简称如:红色"r",黄色"y"
RGB格式:十六进制格式如"#88c999";(r,g,b)元组形式
也可以传入颜色列表
设置等高线透明度
关键字:alpha
默认为1
取值范围为:0~1
设置等高线颜色级别
关键字:cmap
colors和cmap两个关键字不能同时提供
取值为:注册的颜色表明
形式如:"颜色表_r"
常用的有:'Accent', 'Accent_r', 'Blues', 'Blues_r', 'BrBG', 'BrBG_r', 'BuGn', 'BuGn_r', 'BuPu', 'BuPu_r', 'CMRmap', 'CMRmap_r', 'Dark2', 'Dark2_r', 'GnBu', 'GnBu_r', 'Greens'
设置等高线宽度
关键字:linewidths
默认为等高线宽度为1.5
取值可以float类型或者列表
设置等高线样式
关键字:linestyles
默认值为:solid
取值可选:{None, 'solid', 'dashed', 'dashdot', 'dotted'}
linestyles为None且线条为单色时,负轮廓的线条会设置成dashed
我们对上一节的等高线图添加一些属性
线条为红色,线条宽度逐渐增大,线条样式为dashed,透明度设置为0.5
1 2 3 4 5 | ```python plt.contour(x,y,z,colors = "r" , linestyles = "dashed" , linewidths = np.arange( 0.5 , 4 , 0.5 ),alpha = 0.5 ) ``` |
传入colors列表
1 2 3 | plt.contour(x,y,z, colors = ( 'r' , 'green' , 'blue' ,( 1 , 1 , 0 ), "#afeeee" , "0.5" ), linewidths = np.arange( 0.5 , 4 , 0.5 )) |
为等高线图,设置cmap为红色系
1 2 3 4 5 6 7 | 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 )) |
3. 显示轮廓标签
我们查看等高线图时,轮廓标签会辅助我们更好的查看图表。添加轮廓标签,我们需要借助clabe
pyplot.contour()绘制等高线方法,会返回QuadContourset
QuadContourset 包含level列表数据
使用pyplot.clabel()接受level列表数据标注在等高线上
1 2 3 4 5 6 7 8 9 10 | 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 ) |
4. 填充颜色
通常在等高线图中,不同区域填充不一样的颜色,帮助我们查看图表时更好地理解
使用pyplot.contourf()对比同区域轮廓进行填充颜色
1 2 3 4 5 6 7 | 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 ) |
5. 添加颜色条说明
我们可以借助pyplot.colorbar()方法来添加颜色条说明
1 2 3 4 5 6 7 8 9 10 11 | 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相关属性的学习。在绘制等高线图时,我们需要对三角函数、指数函数、正余弦函数等知识有一点了解,才能绘制出想要的图表
以上就是Python+matplotlib实现绘制等高线图示例详解的详细内容
原文链接:https://blog.csdn.net/weixin_54556126/article/details/121439373