Согласованная окраска для нескольких графиков ggplot2 с использованием функции stat_density2d

Я пытаюсь сделать таймлапс, так как у меня есть графики за разные месяцы, и я бы хотел, чтобы они были «анимированы». Например, см. ниже карты насильственных преступлений в Хьюстоне из образца пакета ggmap.

Январские преступления

Я хочу сделать анимацию, небольшое видео из месяца в месяц, поэтому цвета графиков должны быть одинаковыми. Для января максимум 900, а для февраля 1100, несмотря на то, что они обувают тот же оттенок синего, что неправильно.

Февральские преступления

Я попытался выполнить шаги, показанные здесь, используя 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)
}

person user3507584    schedule 08.07.2015    source источник
comment
В вопросе, на который вы ссылаетесь, рекомендуется использовать аргумент breaks. Это не сработало?   -  person Axeman    schedule 08.07.2015
comment
@Axeman Перерывы не сработали. scale_fill_gradient был отсутствующим аргументом.   -  person user3507584    schedule 09.07.2015


Ответы (1)


Просто установите диапазон цветов для каждого графика с явной настройкой scale

 + scale_fill_gradient(limits=c(0, 1500)))

Если вы добавите это к графику, все они должны измениться от 0 до 1500. Вы можете изменить эти значения на все, что хотите, чтобы сделать их согласованными.

person MrFlick    schedule 08.07.2015