区域多边形未显示在 ggplot2 Choropleth 地图中

2024-02-27

我正在尝试使用 ggplot2 绘制非常基本的地图。我不明白为什么彩色多边形不会显示。看来我的代码与我在许多教程和本网站上已经回答的问题中找到的代码没有什么不同。我认为这可能来自我准备数据的方式(参见下面的 100% 可重复示例)。

library(maptools)
library(sp)
library(ggplot2)
library(rgeos)
con <- url("http://biogeo.ucdavis.edu/data/gadm2/R/GHA_adm1.RData")
print(load(con))
close(con)

ghaDF<-as.data.frame(gadm)
ghaDF$prod <- c(12, 26, 12,22,0,11,4,5,4,4) # add values for the regions to be colored with
gadm@data$id = rownames(gadm@data) #create an id in the shapefile data
ghaMap <- fortify(gadm, region="id")
colnames(ghaDF[5])<-"id"
ghaMap <- merge(ghaMap, ghaDF)

m0 <- ggplot(data=ghaMap)
m1 <- m0 + geom_polygon(aes(x=long, y=lat, fill = prod, group=group)) 
         + scale_fill_gradient(low = "light green", high = "dark green")
m2 <- m1 + geom_path(aes(x=long, y=lat, group=group),color='gray')  
         + coord_equal()
m2

在上图中(输出m2),区域应根据ghaMap$prod多变的。有什么建议么?

(R 版本 3.0.2 - 平台:x86_64-w64-mingw32/x64(64 位))


你的数据看起来不错。这是一个解决方案geom_map(以及 colorbrewer 颜色:-):

devtools::source_gist("https://gist.github.com/hrbrmstr/33baa3a79c5cfef0f6df")
gg <- ggplot()
gg <- gg + geom_map(data=ghaMap, map=ghaMap,
                    aes(map_id=id, group=group,
                        x=long, y=lat, fill=prod))
gg <- gg + scale_fill_gradient(low="#99d8c9", high="#00441b")
gg <- gg + coord_map()
gg <- gg + theme_map() + theme(legend.position="right")
gg

您可以省略devtools… and theme_map()而不影响解决方案。

EDIT使用简化的多边形

library(maptools)
library(sp)
library(ggplot2)
library(rgeos)
library(rgdal)

# get the shapefile
download.file("http://biogeo.ucdavis.edu/data/gadm2/shp/GHA_adm.zip", "GHA_adm.zip")
unzip("GHA_adm.zip", exdir="GHA_adm")

# simplify it
setwd("GHA_adm")
system("ogr2ogr -simplify 0.001 simple1.shp GHA_adm1.shp") # simplify (500K -> 80K)
setwd("..")

# read it in
gadm <- readOGR("GHA_adm", "simple1")

# convert it
gadm_map <- fortify(gadm, region="NAME_1")

# make the values we want to fill with
# you can use "ID_1" but folks I've seen generally like using names. works either way
prod <- data.frame(id=gadm$NAME_1, value=c(12, 26, 12, 22, 0, 11, 4, 5, 4, 4), stringsAs=FALSE)

# merge the data together
gadm_map <- merge(gadm_map, prod, all.x=TRUE) # add it right into the fortified data frame

# plot it
devtools::source_gist("https://gist.github.com/hrbrmstr/33baa3a79c5cfef0f6df")
gg <- ggplot()
gg <- gg + geom_map(data=gadm_map, map=gadm_map,
                    aes(map_id=id, group=group,
                        x=long, y=lat, fill=value))
gg <- gg + scale_fill_gradient(low="#99d8c9", high="#00441b")
gg <- gg + coord_map()
gg <- gg + theme_map() + theme(legend.position="right")
gg

(与上面相同的地图,边缘细节稍少)

Using lsos (via https://stackoverflow.com/questions/1358003/tricks-to-manage-the-available-memory-in-an-r-session):

lsos()

##                               Type   Size Rows Columns
## gadm_map                data.frame 275256 5167       9
## gadm      SpatialPolygonsDataFrame 168296   10       9
## gg                              gg  34792    9      NA
## prod                    data.frame   2136   10       3

与OP相同:

##                               Type    Size  Rows Columns
## ghaMap                  data.frame 3689120 31735      18
## gadm      SpatialPolygonsDataFrame  589424    10      11
## gg                              gg   34792     9      NA
## ghaDF                   data.frame    5088    10      12
## con                            url     552     1      NA
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

区域多边形未显示在 ggplot2 Choropleth 地图中 的相关文章

  • R:如何找到向量的模式[重复]

    这个问题在这里已经有答案了 下面是我的data frame我想知道每个内存类别 1 到 8 的模式是什么 gt dput d structure list MEMORY1 c 5 5 7 1 5 6 4 5 4 5 5 4 1 5 5 2
  • R data.table 连接不等式条件

    我想使用 data table 包根据多个不等式条件对数据进行子集化 data table 手册中的示例展示了如何使用字符变量执行此操作 但不显示数字不等式 我还了解了如何使用子集函数来执行此操作 但我真的很想利用 data table 二
  • 在`rmarkdown`中,如何在句子中添加图标?

    In rmarkdown 如何在句子中添加图标 例如如下 如何添加markdown icon单词 Markdown 和 is 之间 有一个很好的 R 包 可以轻松下载 RMarkdown 文档并将图标添加到其中 icons https gi
  • R:ifelse 中的字符串列表

    我正在寻找与 MySQL 中的 where var in 语句类似的东西 我的代码如下 data lt data frame id 10001 10030 cc1 rep c a b c 10 attach data data new lt
  • R 错误:无法更改锁定绑定的值

    我试图估计无限数字流的平均值和标准差 当我运行代码时 出现错误消息 无法更改锁定绑定的值 我做了一些研究 发现这个错误与我使用全局变量有关 但我无法弄清楚 任何帮助将非常感激 在此先感谢您的帮助 define global variable
  • 根据 row_number() 过滤 data.frame

    更新 自从提出这个问题以来 dplyr 已经更新 现在按照 OP 的要求执行 我正在尝试获取第二行到第七行data frame using dplyr 我正在这样做 require dplyr df lt data frame id 1 1
  • dplyr 中的标准评估:全局环境中的函数出现“无法找到函数”错误

    我试图在 dplyr 中对全局环境中的函数使用标准评估 但出现 无法找到函数 错误 这是一些代码 create data frame df lt data frame x rnorm 10 y rnorm 10 define arbitra
  • 函数“[<-”将_替换_一个元素,但不会追加_元素_

    我在使用时注意到以下几点 lt 我成功于替换元素但不位于追加向量的一个元素 例子 VarX lt integer VarX 1 lt 11 lt VarX 2 22 VarX 1 11 Expected the value of VarX
  • 如何从数据框中删除少于 5 个观察值的个体 [重复]

    这个问题在这里已经有答案了 为了澄清这个问题 我将简要描述数据 中的每一行data frame是一个观察值 列代表与该观察值相关的变量 包括 观察到什么个体 观察时间 观察地点等 我想排除 过滤观察值少于 5 个的个体 换句话说 如果 in
  • 在 Lavaan 生长曲线模型中提取个体轨迹

    我已经使用 R 的 Lavaan 包中的 Growth 函数成功地对一项研究的纵向数据进行了建模 我找不到任何关于如何提取每个参与者的预测轨迹的记录 我只能找到整个组的预测轨迹 在摘要输出的 拦截 部分下给出 使用 lavPredict m
  • 按组计算连续行中的值之间的差异

    这是我的一个df 数据框 group value 1 10 1 20 1 25 2 5 2 10 2 15 我需要按组计算连续行中的值之间的差异 所以 我需要一个结果 group value diff 1 10 NA because the
  • R data.table fwrite 到 fread 空间分隔符并清空

    我在使用 fread 以 作为分隔符和散布的空白值时遇到问题 例如 这个 dt lt data table 1 5 1 5 1 5 make a simple table dt 3 V2 NA add a blank in the midd
  • rvest 和 NHL 统计数据的 CSS 选择器问题

    我想从 hockey reference com 中抓取数据 特别是从以下链接中抓取数据 https www hockey reference com leagues NHL 1991 html https www hockey refer
  • 使用 ggplot 构面时增加闪亮的绘图大小

    有没有办法增加绘图窗口的大小shiny取决于在一个中使用的面的数量ggplot图 也许使用垂直滚动 例如 使用下面的示例 当输入为 A 有三个方面 情节看起来不错 当选项 B 选择绘图数量会增加 但绘图窗口保持相同大小 导致绘图太小 是否有
  • 汇总表中各列的字符值比例

    在这种数据框中 df lt data frame w1 c A A B C A w2 c C A A C C w3 c C A B C B 我需要计算所有列中字符值的列内比例 有趣的是 以下代码适用于大型实际数据集 但对上述玩具数据会引发错
  • R 编程常用工具

    如果已经以不同的方式问过这个问题 我深表歉意 但我找不到任何达到我想要的东西 我真的是从其他软件包 SPSS 开始接触 R 的 当我了解真正可以做什么时 我意识到我还需要其他 工具 这让我想到了我的问题 您有哪些用于开发 R 代码的设置 我
  • 如何在 R 中绘制一列与其余列的关系图

    我有一个数据集 其中 1 是时间 接下来的 14 个是幅度 我想在一张图表上散布所有大小与时间的关系 其中每个不同的列都是网格化的 分层在另一个之上 我想使用原始数据来制作这些图表 并单独制作它们 但只想执行此过程一次 数据集A 唯一的自变
  • 排序因素与水平

    有人能解释一下 R 中 ordered 参数的用途吗 R says ordered逻辑标志来确定级别是否应被视为有序 按给定的顺序 所以如果我有一个名为名称的因素并设置ordered TRUE names lt factor c fred
  • R - 与 SpatialPolygonsDataFrame 对象相交的 SpatialLinesDataFrame 列表的嵌套循环

    我有一系列需要完成的步骤SpatialLinesDataFrame 此处的 线 基于对象与多特征中各个特征的关系SpatialPolygonsDataFrame 多边形 对象 简而言之 每个线列表元素源自单个面要素内部 并且可能会也可能不会
  • RStudio 如何确定控制台宽度,为什么它似乎总是出错?

    我刚刚发现wid lt options width在 RStudio 中 它似乎是我日常控制台使用中令人烦恼的根源 或者更确切地说 更接近根源 我应该先说一下 我目前使用的是 R 3 2 2 RStudio 0 99 491 Linux M

随机推荐

  • 如何使用 Ember CLI 进行生产就绪构建?

    我一直在 Ember 中构建一个 Web 应用程序 并准备将其放在服务器上以供公众使用 我只想创建 dist 文件夹 然后我将通过 FTP 手动将其上传到服务器 我如何在 Ember 中为此构建一个 dist 我不知道如何打开缩小并从构建中
  • Express 和 nginx net::ERR_CONTENT_LENGTH_MISMATCH

    我正在开发一个 Express 驱动的网站 它通过 nginx 代理 有时在浏览器中加载页面时 我会得到以下信息 GET http myapp local css bootstrap css net ERR CONTENT LENGTH M
  • 如何将参数传递给 p:dataTable 中的 valueChangeListener?

    我正在打电话valueChangeListener on a
  • 根据另一个单元格中的值更改单元格中的值

    搜索了这个但找不到方法 我希望能够将一个单元格中的值转换为不同单元格中的另一个值 如下所示 当列中的单元格A包含Y在列中设置相同数量的单元格B to Male或者当列中的单元格A包含N在列中设置相同数量的单元格B价值Female 例如 A2
  • C相当于fstream的peek

    我知道在 C 中 您可以使用以下命令查看下一个字符 in peek 当尝试 查看 C 中文件的下一个字符时 我该如何解决这个问题 fgetc http opengroup org onlinepubs 007908799 xsh fgetc
  • 使用 Glumpy 将 NumPy 数组显示为持续更新的图像

    我有一个使用 NumPy 和 SciPy 在 Python 中运行的模拟模型 它会生成一个 2D NumPy 数组作为每次迭代的输出 我一直使用 matplotlib 和 imshow 函数将此输出显示为图像 然而 我发现了 Glumpy
  • 将对象列表分组为尽可能少的子列表,但不超过最大总和

    我正在尝试编写一种方法 将对象分组到最少量的子列表中 而无需混合类型 对象上的 int 字段 或其值的总和超过定义的最大值 它应该看起来像这样 List
  • Maven:如何安装 mvnsh?

    我怀疑我的处理方式完全错误 我听说过mvnsh http shell sonatype org 并想尝试一下 以减少构建时的延迟 但我完全不知道如何做到这一点 我仍在学习 Maven 并在两者之间进行错误的比较mvn和类似的工具gem ca
  • 将使用 AWT 和 Swing 绘制电影的 Java 应用程序移植到服务器端

    我正在使用一些代码 使用 AWT 和 Swing 功能将动画输出写入桌面 它使用 2D 图形进行绘制并以字体呈现文本 此代码可以使用 Java Media Framework 将动画保存到电影文件 我想将此代码移植到纯服务器端环境 以便使用
  • 在 Javascript 中从 JSON 数组查找名称值对的有效方法

    我当前正在调用一个服务 该服务将响应作为具有名称值对的对象数组发送 下面是一个例子 这些名称值对的数量可以是任意顺序 但我只想访问名称 name2 的值 除了循环遍历每个对象并检查名称以获得 name2 的相应值之外 还有其他有效的方法吗
  • 按位右展开算法

    本来这篇文章要求逆绵羊和山羊操作 但我意识到这超出了我的实际需要 所以我编辑了标题 因为我只需要一个右展开算法 http programming sirrida de bit perm html c e 这更简单 我在下面描述的示例仍然具有
  • 派生类的受保护成员未知

    我找到了一个图形的开源类库 当我将它包含在我的项目中时 它有很多错误 我试图修复它们 但是有一个编译错误我无法解决 基类 template
  • 如何使用 GreenDao 3 生成内容提供者?

    在GreenDao 2 x 中 有一个方法叫做Entity addContentProvider 它为实体生成了 ContentProvider 如何在 GreenDao 3 x 中做同样的事情 使用相同的方法 Entity addCont
  • 没有 single-int-arg 构造函数/工厂方法

    我有这个代码 final Person p new Person 1L final ObjectMapper mapper JacksonUtil INSTANCE getMapper final TypeReference
  • Android 滑动抽屉在创建时打开

    我想要一个在应用程序启动时打开的滑块 它将通过按钮等打开 当用户关闭它时 将有更多按钮可以访问 滑动抽屉可以做到这一点吗 我要在 onCreate 方法中添加什么 Thanks XML 布局 在基本 LinearLayout 中
  • 由于在形成 SQL 查询时不赞成字符串替换,因此如何动态分配表名?

    sqlite3 还很新 所以请耐心听我说 我想要一个可以传递表名和要更新的值的函数 我最初是从这样的事情开始的 def add to table table name string cursor execute INSERT INTO ta
  • 启动后gunicorn无法启动

    我正在运行 Debian Web 服务器 其中 nginx 和 Gunicorn 运行 django 应用程序 我已经一切正常并运行良好 但重新启动服务器后 我收到 502 bad gateway 错误 我已将问题追溯到gunicorn 在
  • 不对应于实体的 RESTful 操作/服务?

    我喜欢 RESTful 因为它简单 而且它避免了 SOAP 等普通 企业 系统的弊端 或者 DCOM 和 RPC 的二进制难度 但 REST 似乎比更抽象的服务更适合数据库实体 我想知道您是否可以建议我如何处理这些情况 例如 假设我有一个用
  • Teams 中的 QnA Maker Bot 格式问题

    我们使用 QnA Maker 知识库实现了一个简单的 Azure 机器人 并启用了 Teams 通道 在 webChat 中 Markdown 格式渲染得很好 然而 在 Teams 中 Markdown 格式并不总是按预期工作 如果答案中没
  • 区域多边形未显示在 ggplot2 Choropleth 地图中

    我正在尝试使用 ggplot2 绘制非常基本的地图 我不明白为什么彩色多边形不会显示 看来我的代码与我在许多教程和本网站上已经回答的问题中找到的代码没有什么不同 我认为这可能来自我准备数据的方式 参见下面的 100 可重复示例 librar