从编辑的数据框创建等高线图

Creation of a contour map from a dataframe EDITED

我有这个日期:

我想用这些数据创建等高线图,我尝试这样做:

x= np.arange(0, 430, 431)
y= np.arange(0, 224, 225)
value = df["Value"].values
X, Y = np.meshgrid(x, y)
plt.contour(X, Y, value, 50)

我在执行程序时遇到这个问题:

我不知道现在该怎么办...我认为 Z 有问题,我认为它是 1D,我应该是 2D,但我不知道。谢谢你的帮助。

已编辑

我使用了以下代码:

x = np.arange(431)
y = np.arange(225)
X, Y = np.meshgrid(y, x)
values = df["Value"].values
values2d = np.reshape(values,(431,225))
plt.contour(X, Y, values2d, 100, cmap='RdGy'))

我得到:

当使用 Y, X = np.meshgrid(y, x) intead 时,我得到:

一定是表示值的时候出错了。谢谢。

您必须转换 z 值数组以符合您创建的网格。

values2d = np.reshape(values,(225,330))
plt.contour(X, Y, values2d)

排列的参数也是错误的:np.arange(arange([start,] stop[, step,], dtype=None))。您的数组大小为零。我还建议 extract/reuse 来自您数据框的 meshgrid 而不是手动创建它。


如果有帮助,这里有一个绘制高斯函数等高线图的简单工作示例:

import numpy as np, matplotlib.pyplot as plt

x = np.arange(330)
y = np.arange(225)
X, Y = np.meshgrid(x, y)

gauss = lambda x,m,s:np.exp(np.power(x-m,2)/(-2*s*s))
values   = gauss(X.flatten(),140,50)*gauss(Y.flatten(),110,20)
values2d = np.reshape(values,X.shape) 
plt.contour(X, Y, values2d)