标签: tmap

并排绘制2个tmap对象

例:

我想并排绘制两个tmap图,这些图是由此代码生成的。

library(tmap)
library(gridExtra)

data(World)

plot1=
  tm_shape(World, projection = "merc") + 
  tm_layout("", inner.margins=c(-1.72, -2.05, -0.75, -1.56)) +
  tm_borders(alpha = 0.3, lwd=2)

plot2=
  tm_shape(World, projection = "merc") + 
  tm_layout("", inner.margins=c(-1.72, -2.05, -0.75, -1.56)) +
  tm_borders(alpha = 0.3, lwd=2)
Run Code Online (Sandbox Code Playgroud)

plot1并且plot2可以作为单个独立地块正常工作: 在此处输入图片说明

问题:

我在将两个图并排放置时遇到问题。我试过了:

grid.arrange(plot1, plot2)通过一个错误Error in arrangeGrob(..., as.table = as.table, clip = clip, main = main, : input must be grob!。我认为这应该可行(使用gridExtra),因为tmap似乎基于grid graphics system

par(mfrow=c(1,2))不起作用,因为它仅显示一个图(猜想这是相关的,因为tmap图不遵循base …

graphics r choropleth tmap

3
推荐指数
2
解决办法
2018
查看次数

使用带有RMarkdown的tmap包的交互式地图

我正在尝试撰写有关我的计划的报告,并使用RMarkdown展示我的工作.但是,我当前使用的地图是由tmap包生成的.

shapefile可以在这里下载

我使用R进行交互的方式是

library(tmap)
library(rgdal)
map <- readOGR("Malaysia SHP", "MYS_adm1")
tmap_mode("view")
tm_shape(map) + tm_polygons()
Run Code Online (Sandbox Code Playgroud)

这将生成一个我们可以直接从R访问的交互式地图.

我希望将其包含在我的RMarkdown中并仍然使其具有交互性.我知道有一个名为的包leaflet通常用于创建交互式地图.有没有办法tmapRMarkdown中使用而不使用leaflet?来创建交互式地图?

任何帮助将不胜感激.谢谢!

r tmap

3
推荐指数
1
解决办法
443
查看次数

将数据帧中的一列添加到 SpatialPolygon 数据帧

我一直在尝试将一列数值数据从数据帧添加到SpatialPolygon数据帧,但每次尝试都会导致后者被转换为类似于前者的标准数据帧。我需要添加该列,以便我可以创建一个以该列的变量为焦点的等值线图。显然,标准数据框不好,因为我正在尝试使用tmap.

这就是我一直在尝试添加列的方式(shapefilecomb空间数据框在哪里,wardturnout是包含相关列的变量):

shapefilecomb <- c(wardturnout)
Run Code Online (Sandbox Code Playgroud)

mapping statistics geography r tmap

3
推荐指数
1
解决办法
4902
查看次数

R-Package tmap/protolite 安装失败:

我正在使用 R 版本 3.4.2 的 Ubuntu 16.04。

我想安装 R-Package“protolite”(更准确地说,我想安装“tmap”,其中 protolite 是先决条件)。我安装了 libprotocol 版本 2.6.1:

$ protoc --version
Run Code Online (Sandbox Code Playgroud)

返回 libprotoc 2.6.1。

当我输入 install.packages "protolite" 时,R 给了我警告:

Package protobuf was not found in the pkg-config search path.
Perhaps you should add the directory containing 'protobuf.pc'
to the PKG_CONFIG_PATH environment variable
No package 'protobuf' found 
Run Code Online (Sandbox Code Playgroud)

后来安装失败

/usr/bin/ld: cannot find -lprotobuf
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

由于安装了 libprotocoll,我通过以下方式搜索了 pc 文件

apt-file search protobuf.pc
Run Code Online (Sandbox Code Playgroud)

哪个返回

libprotobuf-dev: /usr/lib/x86_64-linux-gnu/pkgconfig/protobuf.pc
Run Code Online (Sandbox Code Playgroud)

所以我加了

export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig
Run Code Online (Sandbox Code Playgroud)

然而,这并没有解决问题。有人可以帮我吗?

注意:我现在花了几个小时尝试安装“tmap”,起初我的问题是我安装了 libprotocol …

r tmap

3
推荐指数
1
解决办法
1318
查看次数

将带有底图的tmap保存为图像?

我已经使用tmap和底图在R中创建了一个地图,并希望将其另存为图像。

每当我使用tmap_save将其另存为.png时,都会丢失底图。

大概是因为底图在绘图模式下不可见,而仅在视图模式下可见。

是否有一种很好的方法将带有底图的地图另存为图像?

我有一个解决方法,涉及先将其保存为HTML,但这不是一个很好的解决方案。

r tmap

3
推荐指数
2
解决办法
683
查看次数

将文本标签添加到 tmap 图

我正在尝试在 tmap 图中添加一些文本标签。

library(tmap)
library(raster)

jnk <- getData("GADM",country="IND",level=2)

map_file <- tm_shape(jnk) +
  tm_polygons() +
  tm_text("NAME_1", remove.overlap = TRUE)
Run Code Online (Sandbox Code Playgroud)

我的问题是我在绘图时收到重复的文本(因为我是新手,所以无法发布图像)。我想我可能需要按某种几何形状和 NAME_1 组合进行分组,但我不确定从哪里开始。

任何建议都会很棒!

r tmap

3
推荐指数
1
解决办法
2471
查看次数

在 R 中删除 tmap 中的图例

我有一个简单的问题:如何在 R 中删除 tmap 中自动添加的图例?

在这种情况下,我想删除右侧的图例,描绘“级别”。

在此处输入图片说明

这是我尝试过的:

tm_shape(densities$polygons)+
  tm_polygons(col='level', palette='Reds', alpha=0.5, border.col = 'transparent') + 
  tm_legend(show=FALSE)
Run Code Online (Sandbox Code Playgroud)

我也试过:

tm_shape(densities$polygons)+
  tm_polygons(col='level', palette='Reds', alpha=0.5, border.col = 'transparent') + 
  tm_layout(legend.show=FALSE)
Run Code Online (Sandbox Code Playgroud)

不知道为什么,但这些都没有删除图例。希望有任何解决方案,谢谢!

r tmap

3
推荐指数
1
解决办法
2931
查看次数

仅在 tmap 中绘制图例

我有一个使用库生成的拥挤地图,我已经使用函数中的tmap参数关闭了图例。legend.show = FALSEtm_layout()

我想知道的是:有没有办法自己为这张地图生成图例?这样它就可以成为一个独立的图像?

(很抱歉,代码不会为您提供地图)

tm_borders()+
tm_shape(parks)+
  tm_polygons()+
tm_shape(houses)+
  tm_polygons()+
tm_shape(grid)+
    tm_polygons(col="n", style ="cont", palette="plasma",alpha = 0.5)+
tm_layout(legend.show=FALSE)  
Run Code Online (Sandbox Code Playgroud)

编辑: 是的。它在帮助文件中,它是:函数legend.only = TRUE中的参数tm_layout()

  tm_borders()+
    tm_shape(parks)+
      tm_polygons()+
    tm_shape(houses)+
      tm_polygons()+
    tm_shape(grid)+
        tm_polygons(col="n", style ="cont", palette="plasma",alpha = 0.5)+
    tm_layout(legend.only= T)
Run Code Online (Sandbox Code Playgroud)

gis r tmap

3
推荐指数
1
解决办法
995
查看次数

使用 tmap 包绘制时,两个多边形之间的边界线似乎与轮廓不同

我正在使用该tmap包绘制多个多边形的边界。以下代码是一个基本示例。

library(sf)
library(tmap)

nc <- st_read(system.file("shape/nc.shp", package = "sf"))

tm_shape(nc) +
  tm_borders()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

这看起来不错。但是,如果我更改边界线的样式,则多边形之间的边界看起来与轮廓不同。下面是一个例子。我将线型更改为虚线。一些线段看起来是实心的或有很多点。

tm_shape(nc) +
  tm_borders(lwd = 1, lty = "dotted")
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

这是另一个例子。我将线宽更改为2,透明度更改为0.6。我们可以看到许多内部边界看起来比轮廓更强大。

tm_shape(nc) +
  tm_borders(lwd = 2, alpha = 0.6)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我想了解为什么会发生这种情况,以及如何使所有边界和轮廓的线条样式通用。我将不胜感激任何提示或想法。

更新:其他绘图选项

在这里,我尝试了其他选项来模拟带有虚线边界的地图。该geom_sfggspatial可以产生非常相似点划线边界的情节。但是,如果我更改了sf对象并使用base Rspplotsp包中绘制它,问题仍然存在。

geom_sf

library(ggplot2)
library(sf)

nc <- st_read(system.file("shape/nc.shp", package = "sf"))

ggplot() +
  geom_sf(data = nc, linetype = "dotted", fill = "white") +
  theme_bw() +
  theme(panel.grid = element_blank(),
        axis.text = …
Run Code Online (Sandbox Code Playgroud)

gis maps r tmap r-sf

3
推荐指数
2
解决办法
421
查看次数

加载一些包会影响随机数生成吗?

我发现加载一些包会影响R中的随机数生成,问题可以复现如下。

(1) 打开一个新的 R 会话。(我的情况:R 4.x + RStudio)

(2) 执行以下代码:

set.seed(1)
library(sf)
library(tmap)
sample(1:10, 5)
Run Code Online (Sandbox Code Playgroud)

(3) 第一次的结果是:5 10 2 8 6

(4) 但是,如果多次执行整个代码,结果(第一次之后)总是: 9 4 7 1 2

为什么第一次的结果不一样?看来第一次加载sf和tmap库会影响随机数的生成。这么奇怪。

r tmap r-sf

3
推荐指数
1
解决办法
37
查看次数

标签 统计

r ×10

tmap ×10

gis ×2

r-sf ×2

choropleth ×1

geography ×1

graphics ×1

mapping ×1

maps ×1

statistics ×1