pte*_*ter 6 python numpy matplotlib scipy
我有两个numpy数组,第一个是(30,365)并且包含全年30个深度的值,第二个数组是(30,1)并且包含对应于深度的实际深度(以米为单位)第一个数组.我想绘制第一个数组,以便根据第二个数组缩放深度,但我也希望对数据进行插值(前几个深度相对靠近在一起,而较低的深度相距较远,为pcolor图像提供了块状外观.)
这就是我正在做的事情:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 365, 1)
X, Y = np.meshgrid(x, depth) #depth is the (30, 1) array
plt.pcolor(X, -Y, data) #data is the (30, 365) array
Run Code Online (Sandbox Code Playgroud)
这导致了块状外观,关于如何获得更平滑外观的任何想法?
您的深度是否在规则网格上(即恒定间距)?如果是这样,您可以使用关键字 andimshow设置范围。否则,你有两个选择。extentaspect='auto'
您可以pcolormesh改为使用 并使用shading='gouraud'. 这将有助于锐利的颜色量化,但不如插值。
第二种选择是将数据插值到新的常规深度网格,以便您可以使用imshow不同的插值选项。例如,要仅沿深度方向插值,您可以使用 scipy's interpolate.interp1d:
from scipy.interpolate import interp1d
fint = interp1d(depth, data.T, kind='cubic')
newdata = fint(newdepth).T
Run Code Online (Sandbox Code Playgroud)
添加它们.T是因为插值必须在最后一个索引上,而深度是数据的第一个索引。如果您愿意,可以替换kind为。'linear'
| 归档时间: |
|
| 查看次数: |
9939 次 |
| 最近记录: |