这是我参与11月更文挑战的第15天,活动详情查看:2021最后一次更文挑战
前言
我们在往期对matplotlib.pyplot()方法学习,到现在我们已经会绘制折线图、柱状图、散点等常规的图表啦(往期的内容如下,大家可以方便查看往期内容)
- matplotlib 模块概述:对matplotlib 模块常用方法进行汇总
- matplotlib 模块底层原理:对matplotlib 模块脚本层、美工层及后端层如果工作进行学习
- matplotlib 绘制折线图:折线图相关属性进行汇总
- matplotlib 绘制柱状图:对柱状图相关属性进行汇总
- matplotlib 绘制直方图:直方图相关属性进行汇总
- matplotlib 绘制散点图:对散点图相关属性进行汇总
在matplotlib.pyplot 中除了可以绘制常规图表如折线、柱状、散点等,还可以绘制常用在地理上的平面展示地型的等高线图
本期,我们将详细学习matplotlib 绘制等高线图相关属性的学习,let’s go~
- 什么是等高线图?
+ 等高线图又称为水平图,通过2D形式展示3D图像的图表
+ 等高线图又称为等高地线图,将地表高度相同的点连成一个环线展示到平面曲线上
+ 等高线图又称为Z切片图,因变量Z与自变量X,Y变化而变化
+ 等高线图可以分为首曲线、计曲线、间曲线与助曲线
- 等高线图常用场景
+ 等高线图常用在展示某地地形情况
+ 等高线图也可以计算当地山地高低情况
+ 等高线图常用于地质、地理勘察绘制而成
+ 等高线图也可以用于绘制圆形、椭圆形等数学公式展示
- 绘制等高线图步骤
1. 导入matplotlib.pyplot模块
2. 准备数据,可以使用numpy/pandas整理数据
3. 调用pyplot.contour()或者pyplot.contourf()绘制等高线
- 案例展示
等高线图绘制需要借助很多高中所学的三角函数、指数函数等公式,我们本期案例使用等高线方法汇总圆
+ 案例数据准备
- np.arrage()准备一系列连续的数据
- np.meshgrid()将数据转换成矩阵
1
2
3
4
5
6
7
8
python复制代码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
11
12
python复制代码
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
+ 取值范围:
- 表示颜色的英文单词:如红色"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
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
python复制代码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
python复制代码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
- pyplot.contour()绘制等高线方法,会返回QuadContourset
- QuadContourset 包含level列表数据
- 使用pyplot.clabel()接受level列表数据标注在等高线上
1 | python复制代码 |
通常在等高线图中,不同区域填充不一样的颜色,帮助我们查看图表时更好地理解
- 使用pyplot.contourf()对比同区域轮廓进行填充颜色
1 | python复制代码z = (1-x**2+y**5)*np.exp(-x**2-y**2) |
我们可以借助pyplot.colorbar()方法来添加颜色条说明
1 | python复制代码z = (x**2+y**5)*np.exp(-x**2-y**2) |
总结
本期,对matplotlib.pyplot 绘制等高线方法contour和contourf相关属性的学习。在绘制等高线图时,我们需要对三角函数、指数函数、正余弦函数等知识有一点了解,才能绘制出想要的图表
学习本节过程中,高中的数学知识都还给老师,摸摸头,头发怎么又掉了😱
以上是本期内容,欢迎大佬们点赞评论,下期见~
本文转载自: 掘金