在 R 中创建地图

2023-12-10

我正在尝试用 R 制作一个地图来显示英国每个地区的出现次数。

我的数据目前如下所示:

Area                           Occurences        lon      lat
1 Greater London East North UK        200 -0.0936496 51.43092
2     Lambeth and Southwark UK        16 -0.1178424 51.49351
3             Black Country UK        58 -2.0752861 52.52005
4                   Glasgow UK        45 -4.2518060 55.86424
5                     Leeds UK        331 -1.5490774 53.80076
6     Sth Herts or  Watford UK        210 -0.3903200 51.65649

我有所有 120 个观测值的经度和纬度。到目前为止,我已使用以下代码尝试生成地图:

library(rgdal)
library(cartogram)
library(tmap)
library(maptools)

ukgrid = "+init=epsg:27700"

data(wrld_simpl)

afr <- wrld_simpl[wrld_simpl$NAME == "United Kingdom",]
afr <- spTransform(afr, CRS(ukgrid))

# construct cartogram
afrc <- cartogram(afr, "POP2005", itermax=5)

# plot it
tm_shape(afrc) + tm_fill("POP2005", style="jenks") + 
tm_borders() + tm_layout(frame=F)

这会生成英国地图,但我不确定如何使用我自己的数据作为地图,而不是地图所基于的“wrld_simpl”数据中的人口数据。

有谁有这样做的经验或知道另一种方法来达到预期的结果?谢谢!


我假设你的数据是SpatialPointsDataFrame?您需要找到合适的形状文件(SpatialPolygonsDataFrame)其中每个英国区域对应一个多边形。形状的一个很好的来源是http://www.naturalearthdata.com/

这是一个应该与您的情况类似的示例:

library(rgeos)
library(sp)
library(maptools)
library(tmap)
library(tmaptools)
library(cartogram)

data(wrld_simpl)
data(metro)

## count occurences per polygon: in this case, the number of cities per country
x <- over(metro, wrld_simpl)
res <- table(x$ISO3)
dat <- data.frame(iso_a3=names(res), count=as.vector(res))

## add counts to polygon shape
wrld_simpl <- append_data(wrld_simpl, dat, key.shp = "ISO3", key.data = "iso_a3", ignore.na = TRUE)

## remove 0 counts
wrld_simpl_sel <- wrld_simpl[which(wrld_simpl$count>0), ]

## apply cartogram (doesn't result in a nice cartogram because the shape is too detailed and the counts are too few)
wrld_simpl_carto <- cartogram(wrld_simpl_sel, weight = "count", itermax = 1)

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

在 R 中创建地图 的相关文章

随机推荐

  • 从 C 中的终端获取所有输出

    我目前正在开发 ssh 程序 我希望能够通过网络完全控制终端 我的问题是 如果我向服务器发送命令以在终端中运行 如何获取终端打印的输出 我看到很多帖子说要使用popen 命令 但根据我的尝试 我无法更改目录并使用它执行其他命令 只能执行简单
  • Maven - NoSuchMethodError:void com.google.common.base.Preconditions.checkArgument(布尔值,java.lang.String,java.lang.Object)

    我面临 Maven 和 Java 16 的问题 问题 当我尝试用 maven 打包我的项目时mvn package 我收到此错误 ERROR Error executing Maven ERROR java lang IllegalStat
  • 警告:不能给函数组件提供引用

    我正在使用 Next js 最新版本来制作我的博客网站 不知道为什么会显示错误 当我尝试制作表单时 会显示如下错误 Warning Function components cannot be given refs Attempts to a
  • 使用 javascript 基于交互式 ggplot 创建过滤器选择

    我创建了以下 Rmarkdown 文件 以根据单击交互式 ggplot 进行选择 在 javascript 块中 我想使用从以下位置获得的字母 A 或 B 代替 A 交互式 ggplot 中的 onclick 事件 如果用户单击多边形 B
  • 如何保护GAE服务器端计算逻辑?

    假设我的 html 表单有 100 个字段 填写所有字段后 系统会计算一些分数并向用户显示 假设分数值从 0 到 3000 当用户更改任何字段中的值时 我们向他显示值范围 0 1000 1001 2000 2001 3000 没有详细分数
  • 如何在 DriverKit 系统扩展中分配内存并将其映射到另一个进程?

    我已在应用程序中分配内存并将其指针和大小传递给IOConnectCallStructMethod Using IOMemoryDescriptor CreateMapping然后 我将此内存映射到 DriverKit 系统扩展进程 并且可以
  • 按值传递和按引用传递

    我正在开发一个项目 该项目通过使用重载来计算员工的收入 并且还按值传递 按引用传递 我需要至少使用程序中的一个函数来演示按值传递 以及至少一个用于演示使用引用参数进行引用传递的函数 这是我到目前为止得到的 include
  • 如何在 ADO.NET 查询中添加双引号?

    我试图防止所有查询中出现任何 SQL 注入 并且想知道如何在此查询中添加双引号 谢谢 string Format SELECT TOP 10 article guid article title FROM article WHERE art
  • 如何在 CodeDom 中创建一个继承自另一个类并传递类型参数的类?

    这是我希望生成的类声明的样子 public sealed partial class Refund DataObjectBase
  • Handler.handleMessage在测试中没有被调用,但在应用程序中被调用

    我有一项在单独进程中运行的服务 该服务生成一个新线程onCreate 方法 该线程将消息发送回服务 如果我手动启动应用程序 一切都会正常 消息会被接收Handler在我的服务中 但在我的测试中handleMessage 方法永远不会被调用
  • 将从应用程序获取的地理位置传递到 UIWebView

    我正在开发 iOS 应用程序 在其中一个视图中 我想将 UIWebView 包含在包含地图的页面中 地址是 https carsharing mvg mobil de 该网站需要位置权限 因此一旦用户看到此视图 就会出现警报 https c
  • 在多个平台的解决方案中构建 Visual Studio C++ 项目

    我有一个 Visual Studio 解决方案 其中包含多个 C 项目和一个 C 项目 C 项目已正确配置为针对 x64 和 win32 进行构建 具有单独的输出目录 针对 32 和 64 引用的正确二进制文件等 并且默认配置为 x64 C
  • Xamarin Forms 因异步 Http 调用而崩溃

    我正在开发一个 Xamarin Forms 4 1 0 应用程序 它进行 REST 调用 当调用我的网络服务时 应用程序崩溃 无一例外 仅在输出中收到此消息 07 08 19 09 04 792 F 22723 Assertion at U
  • 如何获取本地COM服务器的进程句柄?

    我的 Windows 客户端应用程序中有一个指向 COM 本地 进程外 服务器的 IUnknown 指针 想要获取正在运行本地 COM 服务器的窗口进程的句柄 有什么方法可以通过 COM 执行此操作 而不向服务器添加新接口来请求进程句柄 我
  • 具有代码优先独立关联或外键关联的 EF 模型

    我读过有关独立协会的文章Ladislav 我已经检查了他在此提供的信息link 这些信息非常有帮助 并且提供了一些线索 不过 我想对我有权访问的现有数据库进行建模 它具有三个表 Users Certificate 和 Quiz 起初我认为建
  • 全局错误处理程序,包括 Model Binder 错误

    我正在开发一个 AspNet Core 3 1 web api 项目 该项目正在由 PenTest 机构进行测试 当不正确的输入数据导致包含有关项目代码内部信息的响应时 他们会标记情况 如下所示 type https tools ietf
  • 杀死Python中的所有线程

    我有一个 python 脚本 它将不断 ping 一些 IP 并将结果打印到屏幕上 但我想通过按键终止脚本 最好使用 q 键或通过 ctrl c 然后终止所有线程 实现这一目标的最佳方法是什么 我的代码如下 import os import
  • Pandas:如何将函数应用于不同的列

    假设这是我的功能 def function x return x str lower 这是我的数据框 df A B C D 0 1 67430 BAR 0 34380 FOO 1 2 16323 FOO 2 04643 BAR 2 0 19
  • Shiny:使用shinyjs禁用tabPanel()

    我正在使用 SriPaladugu 提供的答案here禁用tabPanel 我注意到 如果存在空格 它就不起作用tabPanel title 他们编写了自己的 JavaScript 代码并使用shinyjs启用 禁用面板 我不熟悉 Java
  • 在 R 中创建地图

    我正在尝试用 R 制作一个地图来显示英国每个地区的出现次数 我的数据目前如下所示 Area Occurences lon lat 1 Greater London East North UK 200 0 0936496 51 43092 2