Я сделал серию карт для ежемесячной заболеваемости. Идея состоит в том, чтобы сделать подарок.
Проблема в том, что каждый сюжет создавался независимо со своим масштабом.
Я использую Viridis в этом случае. Есть ли способ сохранить одинаковый масштаб и диапазоны для всех графиков, даже если конкретный месяц (один график) не имеет данных по этим шкалам?
Вот что я сделал:
library(ggmap)
library(sp)
murder <- subset(crime, offense == "murder")
murder <- SpatialPointsDataFrame(murder[,c("lon", "lat")], data=murder,
proj4string = CRS("+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"))
p <- ggmap(get_stamenmap(bbox=c(left=min(murder$lon), bottom=min(murder$lat),
right=max(murder$lon), top=max(murder$lat)), zoom=12))
d <- unique(murder$month)
murder <- murder[!(murder$month=="january" & murder$hour>0 & murder$hour<17),]
murder <- murder[!(murder$month=="february" & murder$hour>110 & murder$hour<24),]
murder <- murder[!(murder$month=="march" & murder$hour>12 & murder$hour<17),]
for (i in d){
murder2 <- murder[murder$month==i,]
mapa <- p +
geom_point(data=murder2@data,
aes(x=murder2@coords[,1], y=murder2@coords[,2], color=as.numeric(hour)),
alpha=0.5,size=7) +
scale_color_viridis_c(option="C",breaks=c(0,2,4,8,12,16,20,23),
labels=c("00:00","02:00", "04:00","08:00","12:00","16:00","20:00","23:00"),
name="Hour",
guide=guide_legend( keyheight = unit(3, units = "mm"),
keywidth=unit(6, units = "mm"),
label.position = "bottom", title.position = 'top', nrow=1,
label.theme=element_text(size = 6,face = "bold",color = "grey2",family = "Gotham"),
title.theme=element_text(size = 6,face = "bold",color = "grey2",family = "Gotham", hjust=0.5)
))
ggsave(filename=paste0(i,".png"),plot=mapa, bg="transparent",
width =15, height = 15, units="cm", dpi=200)
}
Это мои результаты. Первый график (с марта) имеет 8 значений в своей шкале, а второй график (с февраля) имеет только 2:


Я хочу одинаковые 8 значений для каждой карты. даже если в этих значениях нет наблюдений.