问题描述
我有这个情节
使用此脚本
library(raster)
library(tmap)
library(classInt)
download.file("https://github.com/mtennekes/tmap/files/5500015/Difference.tif.zip","Difference.tif.zip")
unzip("Difference.tif.zip","Difference.tif")
diff <- raster("Difference.tif")
diff_values <- getValues(diff)
diff_values_below0 <- diff_values[diff_values < 0]
diff_values_above0 <- diff_values[diff_values > 0]
classes1 <- classIntervals(diff_values_below0,n = 4,style = "fisher")
classes2 <- classIntervals(diff_values_above0,style = "fisher")
all_classes <- c(classes1$brks,classes2$brks)
diff_map<-
tm_shape(diff) +
tm_raster(midpoint = 0,breaks = all_classes,palette = "RdBu")+
tm_layout(legend.outside = TRUE)
tmap_save(diff_map,"diff_map.png",width=1000,height=700,dpi = 150)
如您所见,图例右边有空白。我尝试使用outer.margins
删除它,但没有一个试验成功。
关于如何做到这一点的任何建议?
解决方法
我很感谢您写了一个有据可查的问题。在R中修改图形的一般策略是,首先确定三个绘图范式中的哪一个在起作用,然后创建一个新功能,但这只是对代码的较小修改。更具体的策略是仔细阅读文档,然后对您的参数进行修改。我选择了中间立场,因为我假设您已经完成了第二个。
看一下tm_layout
的代码,它似乎主要是代替基本图形的图形参数,但这只是一个猜测。然后,我进一步猜测Legend.width是要修改的参数(我选择以0.2为起点),但收到警告消息:
警告信息: 在preprocess_gt(x,交互式=交互式,orig_crs = gm $ shape.orig_crs)中: legend.width控制地图中图例的宽度。请使用legend.outside.size来控制外部图例的宽度
然后在文件浏览器中查看结果,我发现....没有任何改善。因此,请注意我再次尝试的警告,这次更改了legend.outside.size
参数。它确实将绘图位置移到了右侧,但是我收到了另一个警告,该参数设置为0.15:
图例标签过宽。标签已调整大小为0.54、0.59、0.59、0.59、0.62、0.66、0.66、0.60、0.55。增加legend.width(tm_layout的参数)以使图例更宽,因此标签也更大。 地图已保存到/home/david/Downloads/diff_map3.png 分辨率:1000 x 700像素 尺寸:6.6666667 x 4.666667英寸(150 dpi)