0

首先,如果有人有一个很好的教程的链接,可以使用geoviews或holoviews创建colomaps并将其传输到仪表板,请发送链接。我试图模仿他们在此处视频中的时间戳所做的事情。除了他们网站上的几个例子之外,也很难找到好的地理视图文档,所以指向完整文档会很棒。

无论如何,我认为我有一个非常基本的情节。它是 y 的 xa 网格和 az 值的网格。我想在geoviews中绘制这个。它基本上包含来自 GPS 站的插值运动,我想制作 z 值的颜色图。我可以用 matplotlib 用一个简单的方法很容易地绘制这个

plot = plt.scatter(mesh_x, mesh_y, c = z1, cmap = cm.hsv)

但是试图将它放入geoviews会产生一个非常时髦的数据框。

运行print(np.shape(mesh_x),np.shape(mesh_y), np.shape(z1))显示所有这些的形状都是 (41,348)。如果我尝试将它们放入一个数组中, a = np.array((mesh_x,mesh_y,z1))我会得到一个形状为 (3,41,348) 的数组,如预期的那样。从这里我真的只是在猜测该怎么做。当我尝试将其放入 geoviews 点数据框时

points = [a[0], a[1], a[2]] df = gv.Points(points) df.dframe()

然后运行df.dframe()它显示两列,经度和纬度的值不正确,这是它显示的屏幕截图,如果它有帮助在此处输入图像描述

我曾尝试转换为 xarray,因为它似乎在 geoviews 网站上显示的所有示例中都是首选,但它看起来也很时髦。当我尝试时,xrtest = xr.DataArray((mesh_x,mesh_y,z1))我得到一个看起来像这样的 xarray在此处输入图像描述

在这一点上,我不知道该怎么做。我尝试了几种不同的方法,虽然我可能会工作,但我不记得所有这些方法。这就是我现在的位置。我确定我做错了什么,我只是不知道如何正确地做。谢谢

4

1 回答 1

0

假设您想要在 Matplotlib 中使用点图,等效于 plt.scatter 的 HoloViews 是 hv.Points。hv.Points 接受一种整洁的数据格式,与 Matplotlib 相比,您可以通过转置数据获得该格式:

import matplotlib.pyplot as plt
from matplotlib import cm
%matplotlib inline
mesh_x = [1,2,3,6]
mesh_y = [6,2,8,0]
z1 = [0.5, 4, 6,2]

plot = plt.scatter(mesh_x, mesh_y, c = z1, cmap = cm.hsv)

plt.scatter

import holoviews as hv
hv.extension('matplotlib')

hv.Points(zip(mesh_x,mesh_y,z1), kdims=["x","y"], vdims=["z"]).opts(color='z', cmap="hsv")

hv.Points

kdims=["x","y"],是可选的,但明确说明了您想要的关键尺寸。您可能还需要考虑 hvPlot,它处理与 plt.scatter 相同的数据格式:

import pandas as pd
df = pd.DataFrame(dict(x=mesh_x,y=mesh_y,z=z1))

import hvplot.pandas
df.hvplot.scatter(x="x", y="y", c="z", cmap="hsv")

在此处输入图像描述

于 2020-05-20T19:00:38.687 回答