使用 stat_density2d 函数对多个 ggplot2 图进行一致着色

Consistent coloring for several ggplot2 graphs using stat_density2d function

我正在尝试延时拍摄,因为我有不同月份的图表,我希望它们是 "animated"。例如,请参阅下面来自 ggmap 包裹样本的休斯顿暴力犯罪地图。

我想制作一个动画,一个每月播放的小视频,所以图表的颜色需要保持一致。 1 月份的最大值是 900,而 2 月份的最大值是 1100,尽管他们会穿同样色调的蓝色鞋子,这是错误的。

我尝试按照 here 所示的步骤,使用 scale_alpha_continuous()scale_color_discrete(),但我没有设法修复它。关于如何使所有图表的颜色设置最大值一致的任何想法?非常感谢任何帮助!

带有数据的代码:

library(ggplot2)
library(ggmap)
library(mapproj)

crime <- data.frame(crime)
violent_crimes <- subset(crime, offense != "auto theft" & offense != "theft" & offense != "burglary")
violent_crimes$offense <- factor(violent_crimes$offense, levels = c("robbery", "aggravated assault", "rape", "murder"))
violent_crimes <- subset(violent_crimes,  + -95.39681 <= lon & lon <= -95.34188 & 29.73631 <= lat & lat <= 29.78400) # restrict to downtown

houston <- get_map("houston", zoom = 14)
HoustonMap <- ggmap(houston, extent = "device", legend = "topleft")

violent_crimes$month <- factor(violent_crimes$month)
months <- levels(violent_crimes$month)

for (i in levels(violent_crimes$month)){
        monthchosen <- months[i]
        violent_crimes_month <- subset(violent_crimes, month == as.character(monthchosen))

        HoustonMap +   
                stat_density2d( 
                        aes(x = lon, y = lat, fill = ..level..),
                        size = 2, bins = 4, data = violent_crimes_month,
                        geom = "polygon"
                )

        ggsave(file=paste0("Houston_",as.character(i),".png"), dpi=200)
}

只需使用显式 scale 设置

为每个绘图设置颜色范围
 + scale_fill_gradient(limits=c(0, 1500)))

如果将其添加到绘图中,它们应该都在 0 到 1500 之间。您可以将这些值更改为任何您想要使它们保持一致的值。