我尝试使用tmap
函数tm_dots
通过一个时间变量给一组地理点着色,但是它一直将时间变量视为分类变量。有没有办法将POSIXct
列用作连续变量?演示该问题的示例代码如下:
library(sf)
library(tmap)
df = data.frame(lon=1:20,lat=1:20,ts=as.POSIXct(paste0('2020-01-',1:20)))
df = st_as_sf(df,coords=c("lon","lat"),crs=4326)
tm_shape(df) + tm_dots(col="ts")
一种“解决方案”是将日期转换为数字(例如,从最早日期算起的天数),然后使用此数值变量为点着色,可能在图例中使用不同的标签将数字替换为原始日期,但这似乎需要大量的工作,并且不太可能在不进行大量修改的情况下产生满意的结果。
1条答案
按热度按时间dly7yett1#
您需要声明一个调色板;考虑一下这段代码。它使用了一个通用的顺序调色板。还要注意在通用的
tmap::tm_symbols()
调用中stretch.palette = TRUE
的默认值-这会导致插入颜色,也就是说,你可以有比调色板定义的颜色更多的值。