2015-07-08 3 views
0

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

January crimes

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

February crimes

Я пытался следовать инструкциям, появляющимся 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) 
} 
+0

Вопрос, который вы связываете, советует использовать аргумент 'breaks'. Разве это не сработало? – Axeman

+0

@Axeman Перерывы не срабатывали. Недопустимый аргумент 'scale_fill_gradient'. – user3507584

ответ

1

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

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

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

Смежные вопросы