使用Python在国家地图上绘制数据的最简单方法

2024-04-15

无法删除问题。请参考问题:使用底图根据字典值对国家/地区的州进行着色 https://stackoverflow.com/questions/36118998/shade-states-of-a-country-according-to-dictionary-values-with-basemap

我想绘制墨西哥每个州的数据(某一年的患病人数)。 我正在使用 jupyter 笔记本。 到目前为止,我已经看到了几个选项和教程,但似乎没有一个似乎明确解释如何绘制一个国家的地图。下面我解释了我见过的一些选项/教程以及为什么它们不起作用(我这样做只是为了证明教程不是很直接):

  1. Bokeh (http://docs.bokeh.org/en/latest/docs/gallery/texas.html http://docs.bokeh.org/en/latest/docs/gallery/texas.html)。在教程中,假设 us_counties 位于 bokeh.sampledata 中,则绘制了德克萨斯州。但是我在样本数据中没有找到其他国家。

  2. mpl_toolkits.底图(http://www.geophysical.be/2011/01/27/matplotlib-basemap-tutorial-07-shapefiles-unleached/ http://www.geophysique.be/2011/01/27/matplotlib-basemap-tutorial-07-shapefiles-unleached/)。虽然我可以导入 shapefile,但无法运行from shapefile import ShapeFile(导入错误:无法导入名称 ShapeFile)。此外,我无法下载 dbflib 库。

  3. 文森特(为什么 Python Vincent 地图可视化不映射数据框中的数据? https://stackoverflow.com/questions/32649494/why-python-vincent-map-visuzalization-does-not-map-data-from-data-frame)当我从上述教程中的答案运行代码时,没有出现图像(即使我使用了命令vincent.core.initialize_notebook() ).

  4. Plotly (https://plot.ly/python/choropleth-maps/ https://plot.ly/python/choropleth-maps/)。本教程绘制了从 csv 表导入信息的美国地图(没有其他国家/地区的可用信息)。如果要绘制另一个国家,可以做表吗?

探索了这 4 个选项后,我发现教程不是很清晰或易于遵循。我很难相信用Python绘制一个国家的地图是困难的。我认为一定有比过去教程中解释的方法更简单的方法。

问题是: 哪种是用 python 绘制某个国家(任何)的地图的最简单(希望简单)的方法以及如何实现?

我已经安装了以下软件包:matplotlib、pyshp、mpl_toolkits.basemap、bokeh、pandas、numpy。 我还从以下网站下载了墨西哥的地图http://www.gadm.org/ http://www.gadm.org/

提前致谢。


虽然这个问题在目前的形式中似乎无法回答,但我至少会注意到,在使用底图时您似乎出了问题 - 您不想导入 Shapefile,而只是使用readshapefile的方法Basemap像这样的对象:

m = Basemap(projection='tmerc')
m.readshapefile("/path/to/your/shapefile", "mexican_states")

然后,您将能够通过以下方式访问每个州边界的坐标m.mexican_states(作为数组列表)和相应的信息(例如名称,可能是识别代码)m.mexican_states_info。然后,您将需要某种包含状态名称/代码的字典或数据帧(对应于中的内容)m.mexican_states_info) 和您想要绘制的值。一个简单的例子会像这样工作,假设你有一个名为mexican_states_sick_people看起来像{"Mexico City":123, "Chiapas":35, ...}:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.collections import PatchCollection
from mpl_toolkits.basemap import Basemap
from shapely.geometry import Polygon
from descartes import PolygonPatch

fig, ax = plt.subplots()

# Set up basemap and read in state shapefile (this will draw all state boundaries)
m = Basemap(projection='tmerc')
m.readshapefile("/path/to/your/shapefile", "mexican_states")

# Get maximum number of sick people to calculate shades for states based on relative number    
max_sick = np.max(mexican_states_sick_people.values())

# Loop through the states contained in shapefile, attaching a PolygonPatch for each of them with shade corresponding to relative number of sick people
state_patches = []
for coordinates, state in zip(m.mexican_states, m.mexican_states_info):
    if state["State_name"] in mexican_states_sick_people.keys():
        shade = mexican_states_sick_people[state["State_name"]]/max_sick       
        state_patches.append(PolygonPatch(Polygon(coordinates), fc = "darkred", ec='#555555', lw=.2, alpha=shade, zorder=4)

 # Put PatchCollection of states on the map
ax.add_collection(PatchCollection(state_patches, match_original=True))

如果您有一个州的工作形状文件,并确保您拥有的病人数据集具有每个州的某种标识符(名称或代码),该标识符允许您将数字与shapefile 中状态的标识符(这就是shade = ...循环中的行依赖于 - 在示例中,我使用 shapefile 中的名称作为键来访问字典中的 vals)。

希望这有帮助,祝你好运!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Python在国家地图上绘制数据的最简单方法 的相关文章

随机推荐

  • 添加到 hashmap 需要很长时间

    我在我的java程序中坚持了几行 这花费了太多时间 大约20秒 而且对我来说这似乎很奇怪 这是线条 Map
  • 从随机字符串中查找单词列表中的单词

    我正在开发一个解读类型的程序 用户可以输入随机字母 程序会迭代这些字母和单词列表 以尝试找到包含单词列表中的这些部分或全部随机字母的单词 例如 if Input sasdfle words found in wordlist sad fle
  • 实体框架首先选择不带 .ToList() 的新 POCO

    我正在创建一个具有服务层 WCF 网站 和 Silverlight 4 客户端的应用程序 RIA 服务不是一种选择 因此我们创建中间类来来回传递 为了这个问题的目的 我们假设我来回传递美味Food对象 public class FoodDa
  • 使用knockout js实现html5拖放照片,durandal 2.0

    我在淘汰赛 js 视图模型中有一个照片列表 我希望能够在它们之间交换 实际上更正确的术语是将一张复制到另一张上面 这是我的简化视图模型 define durandal app knockout jquery function app ko
  • jQuery UI 日期选择器导致屏幕在选择日期后滚动到顶部

    我在 jQuery 对话框中有几个 jQuery 日期选择器 每当用户从日期选择器中选择日期时 屏幕就会滚动到顶部 这种情况只发生在 IE8 中 而不会发生在 Firefox 3 6 或 Chrome 5 中 由于大多数用户都会使用 IE
  • 如何在 CloudKit 中撤销用户的可发现性权限?

    我很好奇用户是否可以以某种方式更改可发现性权限 我在设置里没找到方法 您可以在您的设备上进行设置Settings iCloud iCloud Drive Find via Email
  • jenkins 擦除存储库并强制克隆与结帐前清理

    我试图了解用于拉取 git 存储库的 擦除存储库并强制克隆 和 签出前清理 这两个选项之间的区别 查看这两个选项的帮助部分 两者似乎都有相似的功能 我无法找出区别 它们的外观如下 清除存储库并强制克隆 在构建之前删除工作区的内容 确保工作区
  • 使用node.js os.cpus()来检测用户空闲时间?

    我正在使用 appjs 开发一个聊天应用程序 该应用程序使用 node js 作为平台 我一直在检测计算机何时处于空闲状态 当用户离开它或不使用它时 Node js 中有 os 模块及其os cpus 为每个核心提供此类信息 model I
  • 如何在不更改原始列表的情况下更改新列表?

    我有一个列表 其中填充了操作中的一些数据 并将其存储在内存缓存中 现在我想要另一个列表 其中包含基于某些条件的列表中的一些子数据 正如下面的代码所示 我正在对目标列表进行一些操作 问题是我对目标列表所做的任何更改也会对 mainList 进
  • 如何防止用户在文本框中输入特殊字符[重复]

    这个问题在这里已经有答案了 我需要验证文本框中的密码条目 我有一些要求需要满足 以便允许创建用户配置文件 其中之一是如果密码包含除数字和字母以外的任何其他内容 则拒绝注册系统需要拒绝进入 我尝试的一切似乎都失败了 这就是我现在站的地方 pr
  • 编译 eigen 程序时出错:错误:'seq' 不是 'Eigen' 的成员

    我试图在遵循算术序列的索引中索引矩阵 根据官网的Eigen教程 我应该使用Eigen seq firstVal lastVal step 来生成这个序列 调用此函数后 会弹出该线程标题中粘贴的错误 我检查了本地 eigen 文件夹中的所有文
  • 如何在 python-docx 中获取单元格背景颜色?

    我正在尝试使用 python docx 从 MS Word 表中读取数据 有一种方法可以设置表格单元格的背景颜色 tcPr cell tc get or add tcPr shd OxmlElement w shd shd set qn w
  • 扩展 ASP.NET 应用程序

    这是一个非常广泛的问题 但希望我能得到有用的提示 目前我有一个在单个服务器上运行的 ASP NET 应用程序 我现在需要进行扩展以适应不断增加的客户负载 所以我的计划是 1 将 ASP NET 和 Web 组件扩展到五台服务器上 2 将数据
  • 用scrapy一一爬取网站列表

    我正在尝试抓取网站列表scrapy 我尝试将网站网址列表作为start urls 但后来我发现我买不起那么多内存 有什么办法可以设置scrapy一次抓取一两个网站 您可以尝试使用concurrent requests 1以免数据超载 htt
  • 如何在java服务器端解密cryptojs AES加密消息?

    我有以下基于 cryptojs 的 javascript 加密 解密函数 它工作得很好 我在使用 cryptpjs 加密消息时使用随机盐 随机 iv 值和特定密码 我在解密加密消息时重复使用相同的盐 iv 和密码来生成密钥 这部分效果很好
  • 如何在odoo 10中添加、更新和删除Many2many字段记录?

    我正在向导中设置功能 该功能将执行以下操作 添加新记录并链接到当前现有记录Many2many Field 更新现有记录Many2many Field 删除当前已有的Many2many场地 向导模型和实际模型有两个Many2many fiel
  • 使用Android Studio和gradle时是否可以在项目之间共享库项目?

    我正在努力弄清楚如何将库项目导入到 Android Studio 中 以使其可用于多个项目 新构建系统的文档意味着您需要将库项目导入到您正在处理的项目的根目录中 Gradle 项目还可以通过使用多项目设置来依赖于其他 gradle 项目 多
  • Windows 7下PostgreSQL pg_ctl注册错误

    在 Windows 7 PostgreSQL 9 3 2 下 我尝试使用不同的端口号和数据目录将同一服务器上的第二个 PostgreSQL 实例注册为服务 使用 initdb 命令在 C Program Files PostgreSQL 9
  • 无法在 log4j 中将 MaxFileSize 设置为值“100MB”

    我使用 log4j1 2 17 和 apache extras log4j 1 2 17 jar 进行日志记录 我的目的是根据大小滚动和归档文件 下面是 log4j xml
  • 使用Python在国家地图上绘制数据的最简单方法

    无法删除问题 请参考问题 使用底图根据字典值对国家 地区的州进行着色 https stackoverflow com questions 36118998 shade states of a country according to dic