从编辑的数据框创建等高线图
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)
我有这个日期:
我想用这些数据创建等高线图,我尝试这样做:
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)