简介
地理空间数据可能是目前存在的最复杂的数据形式之一。出于一个原因,分析师之间的日常对话中不使用这种形式的数据。例如,分析师通常不会谈论纬度和经度,或形状文件。
另一个原因是,地理空间数据所呈现的模式并不明显。
因此,地质可视化在研究的初步分析和设计中发挥着重要作用。
地理散布图
地理散点图与普通散点图相似,只是它们使用观测的地理代码(位置)作为制图中的参考基础。这意味着,与具有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
感谢阅读!