简体   繁体   English

你如何在 tmap 中定位标题和图例?

[英]How do you position the title and legend in tmap?

I am new to programming and am currently enrolled in an introductory spatial analysis course which uses R. The following code yields the tmaps included below.我是编程新手,目前正在参加使用 R 的介绍性空间分析课程。以下代码生成下面包含的 tmap。 How can I center the title for each tmap as well as position the legend on the top right without laying over top the maps themselves?如何将每个 tmap 的标题居中,并将图例放置在右上角而不将地图本身放在上面?

Thank you very much for your assistance.非常感谢你的协助。

  ga1 = tm_shape(a2georgia) +
  tm_polygons('PctBlack', style='quantile', breaks=c(4.98,11.75, 22.35,27.64, 32.55, 40.06,   48.18, 79.64),
              n=8, palette=c('lightblue','khaki1', 'red3'), title='Quantiles(8)',
              border.col='grey27', alpha=.9) +
  tm_layout(legend.position = c("right", "top"), title= '% of Population of Black Race', title.position = c('right', 'top'))


ga_cartogram <- cartogram_cont(a2georgia, "PctBlack", itermax=5)

  ga2 = tm_shape(ga_cartogram) + 
  tm_polygons("PctBlack", style='quantile', breaks=c(4.98,11.75, 22.35,27.64, 32.55, 40.06, 48.18, 79.64), 
              n=8, palette=c('lightblue','khaki1', 'red3'), title='Quantiles(8)',
              border.col='grey27', alpha=.9) +
  tm_layout(legend.position = c("right", "top"), title= '% of Population of Black Race',  title.position = c('right', 'top'))


tmap_arrange(ga1,ga2)

地图

The problem is that {tmap} draws legend and titles inside the bounding box of your polygon.问题是 {tmap} 在多边形的边界框内绘制图例和标题。 To make more room you have to extend the bounding box somewhat.为了腾出更多空间,您必须稍微扩展边界框。

A while back I wrote a blog post on this topic, you might want to have a look at that https://www.jla-data.net/eng/adjusting-bounding-box-of-a-tmap-map/不久前我写了一篇关于这个主题的博客文章,你可能想看看那个https://www.jla-data.net/eng/adjusting-bounding-box-of-a-tmap-map/

As your example is not exactly reproducible I will demonstrate the technique on the North Carolina shapefile that is shipped with {sf} and thus widely available.由于您的示例无法完全重现,我将在 {sf} 随附的北卡罗来纳州 shapefile 上演示该技术,因此可以广泛使用。

library(sf)
library(tmap)

# NC counties - a shapefile shipped with the sf package
nc <- st_read(system.file("shape/nc.shp", package ="sf"))


# bad, bad map...
tm_shape(nc) + tm_polygons("NWBIR74", style='quantile', 
                           breaks=c(4.98,11.75, 22.35,27.64, 32.55, 40.06, 48.18, 79.64),
                           n=8, palette=c('lightblue','khaki1', 'red3'), 
                           title='Quantiles(8)',
                           border.col='grey27', alpha=.9) +
  tm_layout(legend.position = c("right", "top"), 
            title= '% of Population of Black Race', 
            title.position = c('right', 'top'))

在此处输入图片说明

# make some bbox magic
bbox_new <- st_bbox(nc) # current bounding box

xrange <- bbox_new$xmax - bbox_new$xmin # range of x values
yrange <- bbox_new$ymax - bbox_new$ymin # range of y values

# bbox_new[1] <- bbox_new[1] - (0.25 * xrange) # xmin - left
 bbox_new[3] <- bbox_new[3] + (0.25 * xrange) # xmax - right
# bbox_new[2] <- bbox_new[2] - (0.25 * yrange) # ymin - bottom
bbox_new[4] <- bbox_new[4] + (0.2 * yrange) # ymax - top

bbox_new <- bbox_new %>%  # take the bounding box ...
  st_as_sfc() # ... and make it a sf polygon

# looks better, does it?
tm_shape(nc, bbox = bbox_new) + tm_polygons("NWBIR74", style='quantile', 
                           breaks=c(4.98,11.75, 22.35,27.64, 32.55, 40.06, 48.18, 79.64),
                           n=8, palette=c('lightblue','khaki1', 'red3'), 
                           title='Quantiles(8)',
                           border.col='grey27', alpha=.9) +
  tm_layout(legend.position = c("right", "top"), 
            title= '% of Population of Black Race', 
            title.position = c('right', 'top'))

在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM