Python 数据分析三剑客之 Matplotlib(八):等高线 / 等值线图的绘制

CSDN 课程推荐:《Python 数据分析与挖掘》,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务。曾与联想、亨氏、网鱼网咖等企业合作多个企业级项目。


Matplotlib 系列文章:

  • Python 数据分析三剑客之 Matplotlib(一):初识 Matplotlib 与其 matplotibrc 配置文件
  • Python 数据分析三剑客之 Matplotlib(二):文本描述 / 中文支持 / 画布 / 网格等基本图像属性
  • Python 数据分析三剑客之 Matplotlib(三):图例 / LaTeX / 刻度 / 子图 / 补丁等基本图像属性
  • Python 数据分析三剑客之 Matplotlib(四):线性图的绘制
  • Python 数据分析三剑客之 Matplotlib(五):散点图的绘制
  • Python 数据分析三剑客之 Matplotlib(六):直方图 / 柱状图 / 条形图的绘制
  • Python 数据分析三剑客之 Matplotlib(七):饼状图的绘制
  • Python 数据分析三剑客之 Matplotlib(八):等高线 / 等值线图的绘制
  • Python 数据分析三剑客之 Matplotlib(九):极区图 / 极坐标图 / 雷达图的绘制
  • Python 数据分析三剑客之 Matplotlib(十):3D 图的绘制
  • Python 数据分析三剑客之 Matplotlib(十一):最热门最常用的 50 个图表【译文】

另有 NumPy、Pandas 系列文章已更新完毕,欢迎关注:

  • NumPy 系列文章:https://itrhx.blog.csdn.net/category_9780393.html
  • Pandas 系列文章:https://itrhx.blog.csdn.net/category_9780397.html

推荐学习资料与网站(博主参与部分文档翻译):

  • NumPy 官方中文网:https://www.numpy.org.cn/
  • Pandas 官方中文网:https://www.pypandas.cn/
  • Matplotlib 官方中文网:https://www.matplotlib.org.cn/
  • NumPy、Matplotlib、Pandas 速查表:https://github.com/TRHX/Python-quick-reference-table

文章目录

    • 【1x00】等高线概念
    • 【2x00】理解 numpy.meshgrid()
    • 【3x00】绘制方法 matplotlib.pyplot.contour()
    • 【4x00】填充方法 matplotlib.pyplot.contourf()
    • 【5x00】标记方法 matplotlib.pyplot.clabel()
    • 【6x00】Colormap 取值
    • 【7x00】简单示例
    • 【8x00】添加标记
    • 【9x00】轮廓线颜色和样式
    • 【10x00】颜色填充


这里是一段防爬虫文本,请读者忽略。
本文原创首发于 CSDN,作者 TRHX。
博客首页:https://itrhx.blog.csdn.net/
本文链接:https://itrhx.blog.csdn.net/article/details/106066852
未经授权,禁止转载!恶意转载,后果自负!尊重原创,远离剽窃!

【1x00】等高线概念

参考百度百科,等高线概念总结如下:等高线指的是地形图上高程相等的相邻各点所连成的闭合曲线。把地面上海拔高度相同的点连成的闭合曲线,并垂直投影到一个水平面上,并按比例缩绘在图纸上,就得到等高线。等高线也可以看作是不同海拔高度的水平面与实际地面的交线,所以等高线是闭合曲线。在等高线上标注的数字为该等高线的海拔。

  • 位于同一等高线上的地面点,海拔高度相同。但海拔高度相同的点不一定位于同一条等高线上;
  • 在同一幅图内,除了陡崖以外,不同高程的等高线不能相交;
  • 在图廓内相邻等高线的高差一般是相同的,因此地面坡度与等高线之间的等高线平距成反比,等高线平距愈小,等高线排列越密,说明地面坡度越大;等高线平距愈大,等高线排列越稀,则说明地面坡度愈小;
  • 等高线是一条闭合的曲线,如果不能在同一幅内闭合,则必在相邻或者其他图幅内闭合。
  • 等高线经过山脊或山谷时改变方向,因此,山脊线或者山谷线应垂直于等高线转折点处的切线,即等高线与山脊线或者山谷线正交。

在 Matplotlib 等高线的绘制中,需要传递三个基本参数:某个点的 x、y 轴坐标以及其高度。

01

02

【2x00】理解 numpy.meshgrid()

numpy.meshgrid() 方法用于生成网格点坐标矩阵。

import numpy as npa = np.array([1, 2, 3])
b = np.array([7, 8, 9])
res = np.meshgrid(a, b)
print(res)

输出结果:

[array([[1, 2, 3],[1, 2, 3],[1, 2, 3]]),array([[7, 7, 7],[8, 8, 8],[9, 9, 9]])]

给定两个数组,a[1, 2, 3]b[7, 8, 9],a 作为 x 轴数据,b 作为 y 轴数据,那么一共可以绘制出 9 个点: (1,7)、(1,8)、(1,9)、(2,7)、(2,8)、(2,9)、(3,7)、(3,8)、(3,9),而 numpy.meshgrid() 方法就是起这样的作用,返回的两个二维数组,横坐标矩阵 a 中的每个元素,与纵坐标矩阵 b 中对应位置元素,共同构成一个点的完整坐标。

因为在 matplotlib.pyplot.contour() 等高线绘制函数中接收的是二维坐标信息,所以在绘制等高线图之前要将原数据经过 numpy.meshgrid() 方法处理,也可以自己构建类似于上述的二维数组。

分割线

【3x00】绘制方法 matplotlib.pyplot.contour()

matplotlib.pyplot.contour() 方法可用于绘制等高线图。

基本语法:matplotlib.pyplot.contour(\*args, data=None, \*\*kwargs)

通用格式:matplotlib.pyplot.contour([X, Y,] Z, [levels], **kwargs)

基本参数:

参数描述
X, Y数组形式的点的 x 和 y 轴坐标,两者都必须是二维的,形状与 Z 相同
Z绘制轮廓的高度值,二维数组,每个元素是其对应点的高度
levels确定等高线的数目和位置,如果是整数 N,则使用 N 个数据间隔,即绘制 N+1 条等高线
如果是数组形式,则绘制指定的等高线。值必须按递增顺序排列

其他参数:

参数描述
colors等高线的颜色,颜色字符串或颜色序列
cmap等高线的颜色,字符串或者 Colormap
通常包含一系列的渐变色或其他颜色组合,取值参见【6x00】Colormap 取值
alpha透明度,介于0(透明)和1(不透明)之间
origin通过指定 Z[0,0] 的位置来确定 Z 的方向和确切位置,仅当未指定 X, Y 时才有意义
None:Z[0,0] 位于左下角的 X=0, Y=0 处
'lower':Z [0, 0] 位于左下角的 X = 0.5, Y = 0.5 处
'upper':Z[0,0] 位于左上角的 X=N+0.5, Y=0.5 处
'image':使用 rcParams[“image.origin”] = 'upper'的值
antialiased是否启用抗锯齿渲染,默认 True
linewidths等高线的线宽,如果是数字,则所有等高线都将使用此线宽
如果是序列,则将按指定的顺序以升序打印线宽
默认为 rcParams[“lines.linewidth”] = 1.5
linestyles等高线的样式,如果线条颜色为单色,则负等高线默认为虚线
'-' or 'solid', '--' or 'dashed', '-.' or 'dashdot' ':' or 'dotted', 'none' or ' ' or ''

分割线

【4x00】填充方法 matplotlib.pyplot.contourf()

matplotlib.pyplot.contourf() 方法与 matplotlib.pyplot.contour() 的区别在于:contourf() 会对等高线间的区域进行颜色填充(filled contours)。除此之外两者的函数签名和返回值都相同。

基本语法:matplotlib.pyplot.contourf(\*args, data=None, \*\*kwargs)

通用格式:matplotlib.pyplot.contour([X, Y,] Z, [levels], **kwargs)

基本参数:

参数描述
X, Y数组形式的点的 x 和 y 轴坐标,两者都必须是二维的,形状与 Z 相同
Z绘制轮廓的高度值,二维数组,每个元素是其对应点的高度
levels确定等高线的数目和位置,如果是整数 N,则使用 N 个数据间隔,即绘制 N+1 条等高线
如果是数组形式,则绘制指定的等高线。值必须按递增顺序排列

其他参数:

参数描述
colors等高线的填充颜色,颜色字符串或颜色序列
cmap等高线的填充颜色,字符串或者 Colormap
通常包含一系列的渐变色或其他颜色组合,取值参见【6x00】Colormap 取值
alpha透明度,介于0(透明)和1(不透明)之间
origin通过指定 Z[0,0] 的位置来确定 Z 的方向和确切位置,仅当未指定 X, Y 时才有意义
None:Z[0,0] 位于左下角的 X=0, Y=0 处
'lower':Z [0, 0] 位于左下角的 X = 0.5, Y = 0.5 处
'upper':Z[0,0] 位于左上角的 X=N+0.5, Y=0.5 处
'image':使用 rcParams[“image.origin”] = 'upper'的值
antialiased是否启用抗锯齿渲染,默认 True
linewidths等高线的线宽,如果是数字,则所有等高线都将使用此线宽
如果是序列,则将按指定的顺序以升序打印线宽
默认为 rcParams[“lines.linewidth”] = 1.5
linestyles等高线的样式,如果线条颜色为单色,则负等高线默认为虚线
'-' or 'solid', '--' or 'dashed', '-.' or 'dashdot' ':' or 'dotted', 'none' or ' ' or ''

分割线

【5x00】标记方法 matplotlib.pyplot.clabel()

matplotlib.pyplot.clabel(CS, \*args, \*\*kwargs) 方法可用于标记等高线图。

参数描述
CSContourSet(等高线集)对象,即 pyplot.contour() 返回的对象
levels需要标记的等高线集,数组类型,如果未指定则默认标记所有等高线
fontsize标记的字体大小,可选项:
'xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large'
colors标记的颜色,颜色字符串或颜色序列
inline是否在标签位置移除轮廓显示,bool 类型,默认 True
inline_spacing标签位置移除轮廓的宽度,float 类型,默认为 5
fmt标签的格式字符串。str 或 dict 类型,默认值为 %1.3f
rightside_up是否将标签旋转始终与水平面成正负90度,bool 类型,默认 True
use_clabeltext默认为 False,如果为 True,则使用 ClabelText 类(而不是 Text)创建标签
ClabelText 在绘图期间重新计算文本的旋转角度,如果轴的角度发生变化,则可以使用此功能

分割线


这里是一段防爬虫文本,请读者忽略。
本文原创首发于 CSDN,作者 TRHX。
博客首页:https://itrhx.blog.csdn.net/
本文链接:https://itrhx.blog.csdn.net/article/details/106066852
未经授权,禁止转载!恶意转载,后果自负!尊重原创,远离剽窃!

【6x00】Colormap 取值

matplotlib.pyplot.contour()matplotlib.pyplot.contourf()cmap 参数用于设置等高线的颜色,取值通常为 Colormap 中的值,通常包含一系列的渐变色或其他颜色组合。具体参加下图。

官方文档:https://matplotlib.org/tutorials/colors/colormaps.html

03

分割线

【7x00】简单示例

import numpy as np
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']x = np.arange(-2.0, 2.0, 0.01)
y = np.arange(-2.0, 2.0, 0.01)
m, n = np.meshgrid(x, y)        # 生成网格点坐标矩阵# 指定一个函数用于计算每个点的高度,也可以直接使用二维数组储存每个点的高度
def f(a, b):return (1 - b ** 5 + a ** 5) * np.exp(-a ** 2 - b ** 2)# 绘制等高线图,8 个数据间隔,颜色为黑色
plt.contour(m, n, f(m, n), 8, colors='k')
plt.title('等高线图简单示例')
plt.xlabel('x axis label')
plt.ylabel('y axis label')plt.show()

03

分割线

【8x00】添加标记

matplotlib.pyplot.clabel() 方法用于给等高线添加标记。

import numpy as np
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']x = np.arange(-2.0, 2.0, 0.01)
y = np.arange(-2.0, 2.0, 0.01)
m, n = np.meshgrid(x, y)        # 生成网格点坐标矩阵# 指定一个函数用于计算每个点的高度,也可以直接使用二维数组储存每个点的高度
def f(a, b):return (1 - b ** 5 + a ** 5) * np.exp(-a ** 2 - b ** 2)# 绘制等高线图,8 个数据间隔,颜色为黑色
C = plt.contour(m, n, f(m, n), 8, colors='k')
# 添加标记,标记处不显示轮廓线,颜色为黑红绿蓝四种,保留两位小数
plt.clabel(C, inline=True, colors=['k', 'r', 'g', 'b'], fmt='%1.2f')
plt.title('等高线图添加标记示例')
plt.xlabel('x axis label')
plt.ylabel('y axis label')plt.show()

04

分割线

【9x00】轮廓线颜色和样式

matplotlib.pyplot.contour() 方法中,colors 参数即可为等高线轮廓设置颜色,可以是单色,也可以是一个颜色列表,linestyles 参数可以设置轮廓线样式,注意,如果线条颜色为单色,则负等高线(高度值为负)默认为虚线。

import numpy as np
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']x = np.arange(-2.0, 2.0, 0.01)
y = np.arange(-2.0, 2.0, 0.01)
m, n = np.meshgrid(x, y)        # 生成网格点坐标矩阵# 指定一个函数用于计算每个点的高度,也可以直接使用二维数组储存每个点的高度
def f(a, b):return (1 - b ** 5 + a ** 5) * np.exp(-a ** 2 - b ** 2)colors = ['k', 'r', 'g', 'b']
# 绘制等高线图,8 个数据间隔,颜色为黑色,线条样式为 --
C = plt.contour(m, n, f(m, n), 8, colors=colors, linestyles='--')
# 添加标记,标记处不显示轮廓线,颜色为黑红绿蓝四种,保留两位小数
plt.clabel(C, inline=True, colors=colors, fmt='%1.2f')
plt.title('等高线图设置颜色/样式示例')
plt.xlabel('x axis label')
plt.ylabel('y axis label')plt.show()

05

如果想启用渐变色,则可以设置 cmap,取值参见【6x00】Colormap 取值colorbar() 方法可以显示颜色对照条。

import numpy as np
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']x = np.arange(-2.0, 2.0, 0.01)
y = np.arange(-2.0, 2.0, 0.01)
m, n = np.meshgrid(x, y)        # 生成网格点坐标矩阵# 指定一个函数用于计算每个点的高度,也可以直接使用二维数组储存每个点的高度
def f(a, b):return (1 - b ** 5 + a ** 5) * np.exp(-a ** 2 - b ** 2)# 绘制等高线图,8 个数据间隔,颜色为 plasma
C = plt.contour(m, n, f(m, n), 8, cmap='plasma')
# 添加标记,标记处不显示轮廓线,颜色为黑色,保留两位小数
plt.clabel(C, inline=True, colors='k', fmt='%1.2f')
# 显示颜色条
plt.colorbar()
plt.title('等高线图设置渐变色示例')
plt.xlabel('x axis label')
plt.ylabel('y axis label')plt.show()

07

分割线

【10x00】颜色填充

matplotlib.pyplot.contourf() 方法用于对等高线之间的地方进行颜色填充。

import numpy as np
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']x = np.arange(-2.0, 2.0, 0.01)
y = np.arange(-2.0, 2.0, 0.01)
m, n = np.meshgrid(x, y)        # 生成网格点坐标矩阵# 指定一个函数用于计算每个点的高度,也可以直接使用二维数组储存每个点的高度
def f(a, b):return (1 - b ** 5 + a ** 5) * np.exp(-a ** 2 - b ** 2)# 绘制等高线图,8 个数据间隔,颜色为 plasma
plt.contourf(m, n, f(m, n), 8, cmap='plasma')
C = plt.contour(m, n, f(m, n), 8, cmap='plasma')
# 添加标记,标记处不显示轮廓线,颜色为黑色,保留两位小数
plt.clabel(C, inline=True, colors='k', fmt='%1.2f')
# 显示颜色条
plt.colorbar()
plt.title('等高线图颜色填充示例')
plt.xlabel('x axis label')
plt.ylabel('y axis label')plt.show()

08


这里是一段防爬虫文本,请读者忽略。
本文原创首发于 CSDN,作者 TRHX。
博客首页:https://itrhx.blog.csdn.net/
本文链接:https://itrhx.blog.csdn.net/article/details/106066852
未经授权,禁止转载!恶意转载,后果自负!尊重原创,远离剽窃!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437712.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】Office365完整离线安装包下载及自定义安装教程

Office365部署方法 概要提示: 全文内容归结起来其实也就2条命令 下载:D:\365\setup.exe /download D:\365\Configuration.xml(此命令为1条,不可以拆分为2行输入) 安装:D:\365\setup.exe /configure D:\3…

Python 数据分析三剑客之 Matplotlib(九):极区图 / 极坐标图 / 雷达图的绘制

CSDN 课程推荐:《Python 数据分析与挖掘》,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务。曾与联想、亨氏、网鱼网咖等企业合作多个…

【转】中国式管理最有趣的地方,可能就在这些关键词之中

曾仕强老先生的中国式管理,就像中医中药,你说他对吗?根本不符合现代的科学逻辑,有些甚至荒诞。然而,即便这样,依然能西医所不能,这就是他的魅力。让我们一探究竟,对也好,…

Python 数据分析三剑客之 Matplotlib(十):3D 图的绘制

CSDN 课程推荐:《Python 数据分析与挖掘》,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务。曾与联想、亨氏、网鱼网咖等企业合作多个…

Hbase学习-一步一步慢慢来

HBASE是一个分布式系统 其中有一个管理角色: HMaster(一般2台,一台active,一台backup)(我用的五台) 其他的数据节点角色: HRegionServer(很多台,看数据容量) 1.安装可以参考我的Hbase安装&…

Python 数据分析三剑客之 Matplotlib(十一):最常用最有价值的 50 个图表

CSDN 课程推荐:《Python 数据分析与挖掘》,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务。曾与联想、亨氏、网鱼网咖等企业合作多个…

【转】Windows Server 2012 R2 双网卡绑定

双网卡绑定主要有以下两点好处: 1、实现网络容错:主主模式和主被模式 2、带宽聚合 首先准备工作需要两台虚拟机,Server01是目标服务器,需要有两块网卡,并且清空两块网卡的现有配置,Server02作为测试机。 …

解决Hbase输入list,创建表报错,输入status可以,org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: S

今天恢复了一下快照,然后hbase出现了问题 2019-08-25 00:59:55,810 INFO [RpcServer.default.FPBQ.Fifo.handler28,queue1,port16000] client.RpcRetryingCallerImpl: ,1 is not online on chun4,16020,1566665941494at org.apache.hadoop.hbase.regionserver.HRe…

Python 数据分析三剑客之 Pandas(一):认识 Pandas 及其 Series、DataFrame 对象

CSDN 课程推荐:《迈向数据科学家:带你玩转Python数据分析》,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员;已出版《跟老齐学Python:轻松入门》《跟老齐学Py…

【转】通过第三方工具体验Microsoft Graph

上一篇文章我介绍了如何利用官方提供的Graph 浏览器快速体验Microsoft Graph强大功能,这是极好的起点。官方的Graph浏览器力图用最简单的方式帮助您使用Microsoft Graph,为此也隐藏了很多细节。为了帮助大家更好地理解Microsoft Graph的工作原理&#xf…

【转】通过Graph 浏览器体验Microsoft Graph

上一篇介绍了Microsoft Graph的基本概念,接下来我们快速体验一下Microsoft Graph到底能做什么? 为了帮助开发人员直观和快速体验Microsoft Graph的魅力,官方提供了一个专门的工具,叫做Graph 浏览器(Graph Explorer&am…

【转】wpf和winform的区别

WinForm是Net开发平台中对Windows Form的一种称谓。 WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计…

sqoop(数据迁移工具)-安装-学习

sqoop 1)概述 sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具。 导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统; 导出数据:从Hadoop的文件系统中导出数据到关系数…

Python 数据分析三剑客之 Pandas(六):GroupBy 数据分裂、应用与合并

CSDN 课程推荐:《迈向数据科学家:带你玩转Python数据分析》,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员;已出版《跟老齐学Python:轻松入门》《跟老齐学Py…

错误: 找不到或无法加载主类 org.apache.flume.tools.GetJavaProperty

打开bin下的flume-ng 找到下面,添加红色框内容,即可 如果还有有关hbase的同样的错误(因为hadoop与hbase版本不兼容,更换我这里hadoop-2.7.7,hbase-2.0.6(一开始是2.1.5会出现这个错误)&#xff…

flume学习-含安装

1.Flume是什么:Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单。 Flume组成架构 下面我们来详细介绍一下Flume架构中的组件。 1) Agent&#xff1…

【转】使用Azure Rest API获得Access Token介绍

1. 前言 本文主要描述了以java应用为客户端,使用Azure Rest接口的认证过程,帮助快速完成使用Azure Rest接口的第一步。 2. 读者 本文适合开发人员、IT运维人员阅读。 3. 方案架构说明 在我负责的某大型国企客户提出的混合云战略是:不仅要…

Flume-ng 高可用搭建-与测试

前提: 1)五台虚拟机(三台也可以) 2)flume单节点测试并学会 3)hadoop集群搭建完成 Flume NG集群,架构图 Flume的存储可以支持多种,这里只列举了HDFS 角色分配 名称HOST角色Agent1chun1Web ServerAgent2chun2Web Ser…

【转】D365 FO第三方集成(一)---访问认证(应用注册)

从Axapta3.0的COM Business Connector,到AX4.0和AX2009的 .NET Business Connector,到AX2012的WCF Services,最后到D365FO的接口方式。 AX的接口演化,几乎见证了微软整个技术栈的变迁。 D365 FO的Web Services比起AX2012有了飞跃&…

【转】Postman系列一:Postman安装及使用过程中遇到的问题

一:Postman的简介、下载安装及界面说明 1.Postman的简单介绍 Postman是一款强大的网页调试和发送网页HTTP请求的工具,Postman让开发和测试人员做API(接口)测试变得更加简单。在我使用Postman之前还有一个版本,就是需要…