我有一个带有以下代码的tmap:
map <- tm_shape(gb_map)+tm_polygons(border.col = 'transparent', col='black')+
tm_shape(data) +
tm_dots("pred",palette="OrRd",
style = "fisher",
border.col='transparent',
title = "Predicted Sales",
n=5, size =0.03) +
tm_layout("Predicted Sales", title.size=1, legend.outside = T)
当前处于tmap查看模式。
我希望更改图例,以使图例以正方形表示颜色,因为该符号现在太小了。有什么方法可以使所有内容保持不变,只是将图例更改为基于正方形的图例? (我不能增加符号的大小,因为我希望点在地图上显得很小)。手动添加图例会使我丢失断点,而我不希望这样做,因为我正在使用“ fisher”来确定断裂点。
是否可以更改为这样的图例?
谢谢!
答案 0 :(得分:0)
因为使用tm_dots
,所以将图例作为点得到。使用tm_fill
会自动为您提供基于正方形的图例。请提供一些数据,以便我尝试您的代码并提出适当的措施。在执行此操作之前,请先读取您的多边形数据
library("rgdal")
Output.Areas <- readOGR(".", "shapefile_name")
然后读取您的数据文件
data <- read.csv("File_name.csv")
现在将数据连接到shapefile
merged <- merge(Output.Areas, data, by.x="NAME_1", by.y="NAME_2")
数据(NAME_2)和Output.Areas shapefile(NAME_1)中的公用字段是NAME_1和NAME_2。
现在tm_fill
将自动为您提供基于正方形的图例
tm_shape(merged)+
tm_borders(alpha=.4) +
tm_fill("pred",palette="OrRd",
style = "fisher",
title = "Predicted Sales")
答案 1 :(得分:0)
我认为回答这个问题为时已晚。不过,我认为您需要这样的东西:
library(tidyverse)
library(sf)
library(tmap)
nc = st_read(system.file("shape/nc.shp", package="sf"))
Breaks <- c(0, 2000, 4000, 6000, 31000)
Labels <- c("0 - 2000", "2000 - 4000", "4000 - 6000", ">6000")
tm_shape(nc) +
tm_polygons(col="BIR79", title = "Births 1979 - 84", palette = "YlGnBu",
breaks = Breaks, labels = Labels) +
tm_layout(legend.position = c(0.01,0.65),
scale=0.65,
legend.frame = T,
bg.color = "lightblue") +
tm_compass(size = 5, type = "rose", lwd = 3) +
tm_scale_bar(breaks = c(0,50,100,150,200),size = 1, position = c(0.06,0),
lwd = 3)