用Python绘制地理图

301 阅读4分钟

当您的数据包含地理信息时,丰富的地图可视化可以为您理解数据和解释分析结果的最终用户提供重要价值。

![](https://static001.geekbang.org/infoq/14/1446c8aebbe6a638f72f5caa0b4e28c2.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)

Plotly

Plotly是一个著名的库,用于在Python中创建交互式绘图和仪表板。

安装Plotly

![](https://static001.geekbang.org/infoq/60/60b77a87573c1513b9549f8485249d46.png)

在命令提示符中运行这两个命令,以在我们的本地计算机上安装 plotlycufflinks 及其所有软件包。

Choropleth****地图

Choropleth地图是流行的主题地图,用于通过各种阴影图案或预定地理区域(即国家/地区)上的符号表示统计数据。它们擅长利用数据轻松表示整个区域所需测量的可变性。

Choropleth地图是如何工作的?

Choropleth Maps显示与数据变量相关的彩色,阴影或图案化的划分的地理区域或区域。这提供了一种可视化地理区域内值的方法,该值可以显示所显示位置的变化或模式。

在Python中使用Choropleth

在这里,我们将使用 2014年全球不同国家/地区的电力消耗数据集。(github.com/ahmadbinsha…

好的,让我们开始吧。

导入库

![](https://static001.geekbang.org/infoq/bc/bc39ef6678d54530f159a258984df399.png)

在这里, init_notebook_mode(connected = True) 将Javascript连接到我们的笔记本。

创建/解释我们的DataFrame

![](https://static001.geekbang.org/infoq/2a/2aa2a1205cc4be93d591d97e21ca563a.png)
![](https://static001.geekbang.org/infoq/e5/e5081f53bec25c865ce6b840ebe26125.png)

在这里,我们有3列,并且所有列都有219个非空条目。

![](https://static001.geekbang.org/infoq/fc/fc0e0b9a32280a377ac84267660f4256.png)
![](https://static001.geekbang.org/infoq/ba/baf4efaa8cc77710fb6d6b6bceabf5f0.png)

将我们的数据编译成字典

![](https://static001.geekbang.org/infoq/40/4088932fb0caf63e8d7e200c3ac79d5b.png)
  • type ='choropleth':定义地图的类型,即这种情况下的choropleth。

  • colorscale ='Viridis':显示一个颜色图(f_或更多颜色比例,请参阅 此处)。_

  • location = df ['Country']:添加所有国家_/地区_的列表。

  • locationmode ='国家名称':因为我们在数据集中有国家名称,所以我们将位置模式设置为'国家名称'。

  • z:显示每个状态的功耗的整数值列表。

  • text = df ['Country']:将鼠标悬停在地图上的每个状态元素时显示一个文本。在这种情况下,它是国家本身的名称。

  • colorbar = {'title':'Power KWH'}:包含有关右侧栏信息的字典。在这里,颜色栏包含侧边栏的标题。

![](https://static001.geekbang.org/infoq/e5/e5ec821f4b935d8b12a063ef79877c44.png)

_布局 -_一个Geo对象,可用于控制 在其上绘制数据的基础地图的外观 。

这是一本嵌套的字典,其中包含有关地图/绘图外观的所有相关信息。

生成图/图

![](https://static001.geekbang.org/infoq/0f/0ff27db61e3a893eac5588940ac87118.png)
![](https://static001.geekbang.org/infoq/e0/e0a7e53928b9f7a7df854da2aaa12321.gif)

生成了“ 2014年世界电力消耗”的choropleth地图,从上面可以看到,当每个国家/地区悬停在地图上的每个元素上时,都会显示其名称和电力消耗(以kWh为单位)。数据在一个特定区域中越集中,地图上的颜色阴影越深。“中国”的耗电量最大,因此其颜色最深。

密度图

密度映射只是一种显示点或线可能集中在给定区域中的方式。

在Python中使用密度图

在这里,我们将使用世界范围 的地震及其震级数据集。

好的,让我们开始吧。

![](https://static001.geekbang.org/infoq/20/2064be969f871089efeaec9b72a2601f.png)

创建/解释我们的DataFrame

![](https://static001.geekbang.org/infoq/73/733b8ee9f74a1dc415fcbb8168550485.png)
![](https://static001.geekbang.org/infoq/1c/1c426489fcd6b33b8debd0c6fa28396b.png)

在这里,我们有4列,并且所有列都有23412个非空条目。

![](https://static001.geekbang.org/infoq/22/2285af7641f4047585e815e605036e1d.png)
![](https://static001.geekbang.org/infoq/99/99489383c1784728c5988015effa1aa6.png)

绘制数据

![](https://static001.geekbang.org/infoq/31/31d1f90d0e75f41375bad2d363724758.png)
  • lat ='Latitude':获取数据框的_“纬度”_列。

  • lon ='Longitude':获取数据框的经度列。

  • z:显示地震震级的整数列表。

  • radius = 10:设置每个点的影响半径。

  • center = dict(lat = 0,lon = 180):设置字典中地图的中心点。

  • zoom = 0:设置地图缩放级别。

  • mapbox_style ='stamen-terrain':设置基本地图样式。在这里,“雄蕊地形”是基本地图样式。

  • fig.show():显示地图。

地图

![](https://static001.geekbang.org/infoq/a6/a68767dbe309c368b72ed3440d31d425.png)

我们已经绘制了“地震及其烈度”的密度图,从上面我们可以看到,它覆盖了遭受地震破坏的所有领土,并且还显示了当我们将鼠标悬停 在上方时每个区域的地震烈度。

由于数据格式多种多样,有时使用plotly进行地理绘图可能会遇到一些挑战,因此请参考该 备忘单, 了解所有类型的plotly plot语法。

![](https://static001.geekbang.org/infoq/e2/e22e7a9cb14cdb9886100989de0d23e8.png)

看完别走还有惊喜!

我精心整理了计算机/Python/机器学习/深度学习相关的2TB视频课与书籍,价值1W元。关注微信公众号“计算机与AI”,点击下方菜单即可获取网盘链接。