【问题标题】:Creation of a contour map from a dataframe EDITED从数据框创建等高线图 EDITED
【发布时间】:2021-04-03 23:12:38
【问题描述】:

我有这个日期范围:

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

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 时,我得到:

表示值时一定有问题。谢谢。

【问题讨论】:

标签: python python-3.x numpy matplotlib contour


【解决方案1】:

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

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

arange 的参数也是错误的:np.arange(arange([start,] stop[, step,], dtype=None))。您的数组大小为零。我还建议从您的数据框中提取/重用网格网格,而不是手动创建它。


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

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)

【讨论】:

  • 感谢您的帮助,您知道我现在遇到的问题吗?我已经编辑了这个问题。谢谢
  • 除了轴被翻转之外,我看不出有什么不同。关于您的编辑:请不要对您的帖子进行不反映原始问题的修改。最好创建一个新问题并提供新问题的链接(在评论或编辑中)。这样,您还可以帮助可能偶然发现此线程的其他人。问候。
猜你喜欢
  • 2014-07-24
  • 2021-01-14
  • 1970-01-01
  • 2019-06-03
  • 1970-01-01
  • 1970-01-01
  • 2017-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多