contourf画等高线图时,定义z轴范围的方法

本文介绍了一种在Matplotlib中使用contourf函数绘制等高线图的方法,并通过设置相同的颜色区间来确保不同图表之间的直观比较。这种方法适用于需要对比多个图表数据的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在多个图进行比较时,用同样的颜色区间对比更明显一些,但是我找了很久,问了不少人,一直没有解决这个问题,后来随便乱写了一下,发现contourf第4个参数用数组有奇效

import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-3,3,101)
y=np.linspace(-3,3,101)
lim=np.arange(-2,2.1,0.1)
X,Y=np.meshgrid(x,y)
Z1=np.sin(X)*np.cos(Y)
plt.subplot(121)
plt.contourf(X,Y,Z1,lim,cmap="jet")
plt.colorbar()
Z2=2*np.cos(X)*np.sin(Y)
plt.subplot(122)
plt.contourf(X,Y,Z2,lim,cmap="jet")
plt.colorbar()
plt.show()

重点在lim数组上,运行后可以看出来,两个函数的值有明显的不同



<think>好的,我现在需要帮助用户了解如何使用PythonMatplotlib库来绘制极坐标图、散点图和等高线图。首先,我应该回顾用户提供的引用内容,确保回答准确并正确引用。 用户提到了引用[1]、[2]、[3],其中引用[1]提到matplotlib.pyplot.polar()和scatter()结合使用来绘制极坐标散点图。引用[3]指出在Matplotlib中,许多绘图函数只需设置坐标映射为polar即可生成极坐标图。而引用[2]则概述了Matplotlib作为基础绘图库的特点,适合高度定制化的图表。 首先,极坐标图的绘制。根据引用[1]和[3],可以使用plt.polar()函数或者在普通坐标系中设置polar=True参数。例如,使用plt.subplot()创建子图设置projection='polar'。对于散点图,极坐标下的散点图需要将直角坐标转换为极坐标,或者直接在极坐标中使用scatter方法。引用[1]中提到的例子是结合polar()和scatter(),这可能需要先生成极坐标,再调用scatter绘制点。 然后是等高线图。用户没有直接提到相关引用,但根据引用[2],Matplotlib可以绘制等高线图。通常使用plt.contour()或plt.contourf()函数,这需要生成网格数据,比如使用numpy的meshgrid,计算每个点的函数值,再绘制等高线。 接下来需要组织步骤,分三个部分讲解每种图表。确保每个步骤都包含代码示例,并正确应用LaTeX格式,如独立公式使用$$...$$。例如,在等高线图部分,可能需要展示一个函数如$z = \sin(x)\cos(y)$,并用数学公式表达。 另外,用户要求生成相关问题,我需要根据内容想出三个相关问题,可能涉及不同图表的特点、参数设置或与其他库的比较。 需要检查代码是否正确,比如在极坐标散点图中,theta和r的定义是否正确,是否使用了正确的参数。同,确保所有数学表达式用$...$括起来,独立公式单独成段。例如,在等高线部分解释函数,使用$$z = \sin(x) \cdot \cos(y)$$。 最后,确保回答结构清晰,每个图表部分都有步骤说明和代码示例,并在末尾添加相关问题。引用标记要放在对应的引用位置,例如在提到极坐标图引用[^1][^3],在介绍Matplotlib基础引用[^2]。</think>### 使用 Matplotlib 绘制极坐标图、散点图与等高线图 #### 一、极坐标图绘制 1. **基础极坐标图** 使用 `plt.polar(theta, r)` 直接生成极坐标图,或通过子图设置 `projection='polar'`: ```python import numpy as np import matplotlib.pyplot as plt theta = np.linspace(0, 2*np.pi, 100) r = 1 + 0.5 * np.sin(3*theta) # 极径函数 plt.subplot(111, projection='polar') # 声明极坐标系[^3] plt.plot(theta, r) plt.title('极坐标曲线图') plt.show() ``` 2. **极坐标散点图** 结合 `scatter()` 在极坐标系中绘制散点: ```python theta = np.random.rand(50) * 2*np.pi # 随机角度 r = np.random.rand(50) * 5 # 随机半径 plt.polar(theta, r, 'o', markersize=8, alpha=0.6) # 直接调用polar绘制散点 plt.title('极坐标散点图') plt.show() ``` --- #### 二、散点图绘制 在直角坐标系中使用 `plt.scatter(x, y)`,也可与极坐标结合: ```python x = np.random.randn(100) y = np.random.randn(100) colors = np.arctan2(y, x) # 颜色映射极角[^2] plt.scatter(x, y, c=colors, cmap='hsv') plt.colorbar() plt.title('直角坐标系散点图') plt.show() ``` --- #### 三、等高线图绘制 1. **生成网格数据** 使用 `np.meshgrid` 创建二维网格,并定义高度函数 $z = f(x,y)$: ```python x = np.linspace(-5, 5, 100) y = np.linspace(-5, 5, 100) X, Y = np.meshgrid(x, y) Z = np.sin(X) * np.cos(Y) # 示例函数:$$z = \sin(x) \cdot \cos(y)$$ ``` 2. **绘制等高线** - `plt.contour()` 绘制轮廓线 - `plt.contourf()` 填充颜色 ```python plt.contour(X, Y, Z, levels=20, cmap='RdGy') plt.colorbar() plt.title('等高线图(轮廓线)') plt.show() plt.contourf(X, Y, Z, levels=20, cmap='viridis') plt.colorbar() plt.title('填充等高线图') plt.show() ``` --- ### 关键参数说明 | 图表类型 | 核心函数/参数 | 作用 | |------------|-----------------------------------|----------------------------------| | 极坐标图 | `projection='polar'` | 声明极坐标 | | 散点图 | `scatter(x, y, c, cmap)` | 控制颜色映射与样式 | | 等高线图 | `contour(X, Y, Z, levels, cmap)` | 定义数据网格与等高线密度 | ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值