python - 以不同角度跨 Contourf 图切片以获得 2D 线图
问题描述
我正在尝试以 matplotlib 轮廓图的不同角度或切片生成 2D 线图。
作为下面 matplotlib contourf 演示示例的示例
import numpy as np
import matplotlib.pyplot as plt
origin = 'lower'
delta = 0.025
x = y = np.arange(-3.0, 3.01, delta)
X, Y = np.meshgrid(x, y)
Z1 = np.exp(-X**2 - Y**2)
Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2)
Z = (Z1 - Z2) * 2
nr, nc = Z.shape
fig1, ax2 = plt.subplots(constrained_layout=True)
CS = ax2.contourf(X, Y, Z, 10, cmap=plt.cm.viridis, origin=origin,extend='both')
ax2.set_title('Random Plot')
ax2.set_xlabel('X Axis')
ax2.set_ylabel('Y Axis')
cbar = fig1.colorbar(CS)
理想情况下,我想在地图上生成不同角度(30、45、60 度)的线(从任意点开始,直到现有数组的末尾),然后在该线上绘制 Z 变化。
我认为原则上一个更简单的问题是,从 (X2,Y2) 到 (X1,Y1) 的线并绘制给定轮廓的 Z 变化(这已经是插值数据)。
例如,原始问题是从 (-3,-3) 以 45 度角穿过的线。类似的问题是假设一条从 (-3,-3) 到 (3,3) 的线,并在该线上的不同位置绘制 Z 变化。
解决方案
这是一种相当低效的方法,但它确实有效。它在只需要对角线的新网格上重新计算函数。
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import RectBivariateSpline
delta = 0.025
x = y = np.arange(-3.0, 3.01, delta)
X, Y = np.meshgrid(x, y)
Z1 = np.exp(-X ** 2 - Y ** 2)
Z2 = np.exp(-(X - 1) ** 2 - (Y - 1) ** 2)
Z = (Z1 - Z2) * 2
nr, nc = Z.shape
x1, y1 = -3, -2
x2, y2 = 3, 2
fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(15, 5))
CS = ax1.contourf(X, Y, Z, 10, cmap=plt.cm.viridis, origin='lower', extend='both')
ax1.plot([x1, x2], [y1, y2], color='k', ls='--', lw=3, alpha=0.6)
ax1.set_xlabel('X Axis')
ax1.set_ylabel('Y Axis')
cbar = fig.colorbar(CS, ax=ax1)
spline_func = RectBivariateSpline(x, y, Z)
xline = np.linspace(x1, x2, 200)
yline = np.linspace(y1, y2, 200)
zline = spline_func(xline, yline)
ax2.plot(xline, zline.diagonal())
ax2.set_xlabel('X Axis')
ax2.set_ylabel('Z Axis')
plt.show()
推荐阅读
- python - 如何使用熊猫创建像索引这样的分层目录?
- email - 当 namecheap 是您的域名提供商时,使用 mailgun 创建电子邮件重定向
- node.js - axios 多部分请求失败
- u-boot - U-boot 'nand markbad' 没有效果
- amazon-web-services - 为 DynamoDB 中的时间序列数据选择复合键
- excel - Excel 操作列
- jmeter - 独立打开 JMeter jtl 文件
- python-3.x - 在现有 conda 环境中升级 python 版本
- haskell - 定义尺寸常数时如何允许算术运算?
- c# - 实体框架 - 查询以获取列的最后 2 个唯一条目,然后获取它们的相关数据