交互式地理可视化第1部分:Holoviews

2023-01-28 14:38 541 阅读 ID:737
磐创AI
磐创AI

简介

地理空间数据可能是目前存在的最复杂的数据形式之一。出于一个原因,分析师之间的日常对话中不使用这种形式的数据。例如,分析师通常不会谈论纬度和经度,或形状文件。

另一个原因是,地理空间数据所呈现的模式并不明显。

因此,地质可视化在研究的初步分析和设计中发挥着重要作用。

地理散布图

地理散点图与普通散点图相似,只是它们使用观测的地理代码(位置)作为制图中的参考基础。这意味着,与具有x和y变量(有理数值类型)的普通散点图不同,地理散点图的x和y是经度和纬度,并且是标称的。

由于数据科学家努力追踪新冠肺炎感染,地理散点图最近更受欢迎。

在本系列文章中,我们将使用相同的数据集,但使用不同的包。

关于数据集

我们将使用的数据集是“菲律宾咖啡店足迹”数据集,我在2020年生成了该数据集,用于绘制谷歌地图中列出的菲律宾咖啡店。

生成此数据的过程如下:https://towardsdatascience.com/mapping-your-favorite-coffee-shop-in-the-philippines-using-google-places-api-and-folium-2f9d5ad697bf

加载数据集

import pandas as pd
df = pd.read_csv('data/Coffee Brands Footprint.csv',
                index_col=0)
df.head()

请注意,在绘制地理空间图时,必须有一列经度和纬度。在某些情况下,你可以将其替换为GeoPandas几何对象(点、线、多边形)。

让我们开始吧。

使用HOLOVIEWS的一行代码

Holoviews是目前最高级的绘图软件包之一。它非常容易使用,对于那些时间紧张的人,我推荐这个包。

pip install holoviews

注意:确保同时安装geoviews软件包。

pip install geoviews

可以使用以下一行代码生成地理图:

df.hvplot.points(
    x='lng', #longitude column
    y='lat', #latitude column
    hover_cols=['vicinity'], #tooltip when hovered over
    c='brand', #color argument
    title='Coffee Shops in The Philippines', 
    geo=True,
    tiles='CartoLight')

请注意,这就像绘制普通散点图一样!正如我们的介绍所述,x和y参数与经度和纬度列有关。

geo=True的参数对于holoviews将x和y变量解释为形成地理代码非常重要。

让我们移除框架,因为它可能不具有视觉吸引力。这可以通过将xaxis和yaxis设置为None来实现。

df.hvplot.points(
    x='lng', 
    y='lat',
    frame_height=1000,
    frame_width=500,
    xaxis=None,
    yaxis=None,
    hover_cols=['brand', 'vicinity'], 
    c='brand', 
    title='Coffee Shops in The Philippines', 
    geo=True,
    tiles='CartoLight')

由于重叠的点,很难看到一个特定区域有多少家商店。在这种情况下有帮助的是将点的透明度设置为小于100%。

对于这些情况,我们可以尝试使用关键字alpha=0.3将其设置为30%。

df.hvplot.points(
    x='lng', 
    y='lat',
    alpha=0.3,
    frame_height=1000,
    frame_width=500,
    xaxis=None,
    yaxis=None,
    hover_cols=['vicinity'], 
    c='brand', 
    title='Coffee Shops in The Philippines', 
    geo=True,
    tiles='CartoLight')

HOLOVIEWS的利弊

除了HOLOVIEWS易于使用和理解之外,我们上面生成的图可以部署为一个网页,你可以使用它进行演示。

我们的许多高管都不希望看到原始代码,因此在报告时将其作为单独的网页部署是一大优势。

要部署为单独的页面:

import panel as pn
import holoviews as hv
import holoviews.plotting.bokeh

pn.panel(geoscatter).servable(title='HoloViews App').show() #.show() makes it to be a separate html

与大多数软件包一样,一个缺点是,与Folium等其他软件包相比,定制可能不够全面。

结束

我们可以做很多定制来改进上面已经有的可视化效果。建议如下:

1.选择定制调色板-特别是,我们上面的是咖啡品牌,这些品牌可以与特定颜色相关联。例如,星巴克有一种特殊的绿色,可以很好地识别品牌。这里建议的方法是为品牌的颜色创建一列,该列提供给c或color参数。

2.尝试不同的磁贴-最好是磁贴颜色不太鲜艳,以强调要点。对于适用于连续变量的单调颜色,可以谨慎使用彩色图形。主要原因是,磁贴不应分散或从一眼中带走地理图的信息。

正如你可以从上面的内容中看到的,可视化这些点提高了我们对地理空间数据的理解。模式,如网络效应的模式,很容易获得,我们可能可以推断,该地区的咖啡店越多,该地区就越发达。

Github页面上的完整代码:

https://github.com/francisadrianviernes/GeoVisualization/blob/master/The%20Battle%20of%20Interactive%20Geographic%20Visualization%20Part%201%E2%80%8A-%E2%80%8AInteractive%20Geoplot%20Using%20One%20Line%20of%C2%A0Code.ipynb

感谢阅读!

免责声明:作者保留权利,不代表本站立场。如想了解更多和作者有关的信息可以查看页面右侧作者信息卡片。
反馈
to-top--btn