带斜轴的python matplotlib pcolormesh

2024-04-20 05:49:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在Lon/Lat中使用pcolormesh 卫星颗粒的网格。卫星的倾斜度 65度。所以pcolormesh有点歪斜。 我准备了以下两个片段。在

片段(1)部分来自于这些问题 Python quiver and pcolormesh not lining up exactly right 在pcolormesh中,每个像素对应于其左下角的数据, (见图(1))。 数据点总是带有x标记的散点图。在

我后来做的,是移动像素,使像素集中在 实际数据点。 首先,我移动了分辨率为have的像素(见图(2))。在

然后我用Y(纬度)和 X(经度)(见图(3)) 我做了最后一步(用Lat/Lon切换),因为在我的实际例子中 (片段2)分辨力或者说纬度差和纬度差 经度是不一样的和变化的。所以我没有一个规则的网格。 我在开头插入了一个0列,否则我无法使用 pcolormesh公司。 在我的例子中,这不是一个问题,因为我并不真正需要第一个专栏。在

import numpy as np
import matplotlib.pyplot as plt

# Snippet (1)
# Note: In the snippets Latitude is convertible with Y
#                      Longitude is convertible with X

def middle_pc_X(X):
    # X convertible with lon
    X_half = np.abs(np.diff(X)/2.0)
    X_half = np.insert(X_half, 0, 0, axis=1)
    return X_half


def middle_pc_Y(Y):
    # Y convertible with lat
    Y_half = np.abs(np.diff(Y, axis=0)/2.0)
    Y_half = Y_half.T
    Y_half = np.insert(Y_half, 0, 0, axis=1)
    return Y_half


x = np.arange(5)
y = np.arange(5)
X, Y = np.meshgrid(x, y)
C = np.random.rand(len(x), len(y))
res = 1.0   # 1.0 distance between x and y


# combination of X/Y 
X_mega = middle_pc_X(X)
Y_mega = middle_pc_Y(Y)


#Plots
# Plot (1)
# Plot Pcolormesh default
plt.figure(figsize=(8, 8))
plt.subplot(2,2,1)
plt.pcolormesh(X, Y, C)
plt.colorbar()
plt.scatter(X,Y, s=20, c='black', marker='x')



# Plot (2)
# Plot with res
plt.subplot(2,2,2)
plt.pcolormesh(X-(res/2.0),
               Y-(res/2.0),
               C)
plt.colorbar()
plt.scatter(X,Y, s=20, c='black', marker='x')




# Plot(3)
# Plot in combination with X/Y
plt.subplot(2,2,3)
plt.pcolormesh(X-X_mega,
               Y-Y_mega,
               C)
plt.colorbar()
plt.scatter(X,Y, s=20, c='black', marker='x')

1-3号地块: Plots 1-3

代码段(2): 现在我来谈谈我的第二个片段和我的问题 在这里我分别准备了卫星颗粒的片段。 正如我提到的,卫星的倾角是65度。 卫星在下降点(从北向南飞行)。 所以在其他情况下,卫星是在它的上升节点(它是从 从南到北)。 颗粒原来是Lon(7933,24)的形状, 纬度(7933,24),雨水(7933,24)

在snippet(2)中,我做了一个数据的快捷方式(4x4) 在片段(2)的绘图(4)中,您可以看到原始数据。在

我想和片段一一样, 这样像素就集中在实际的数据点上 可悲的是,改变决议的一半是行不通的, 决议不一样。 我想我必须用差分法吗?在

^{pr2}$

enter image description here 地块4:

谢谢你的帮助 马库斯


Tags: 数据middleplotwithnpresplt像素