跨不同ggplot2地图的一致alpha刻度

时间:2016-01-26 20:57:30

标签: r ggplot2 alpha

我试图制作几张不同地图的GIF,显示犯罪在当天的不同时间如何在整个城市中移动。为了做到这一点,我正在制作几个不同的stat_density2d()图,每个时间间隔一个图。这是代码:

data <- read.csv(".../CrimeLocationAndTime.csv", 
                 stringsAsFactors = FALSE)

# Get base map layer
denver = c(lon = -104.9903, lat =  39.7392)
denver_map = get_map(location = denver, zoom = 13, color = "bw")

# Get data slices
twoAMTimeSlice <- data[data$time == "2:00 AM",]
tenAMTimeSlice <- data[data$time == "10:00 AM",]

# Create density map
ggmap(denver_map, extent = "panel", maprange=FALSE) +
  stat_density2d(data = twoAMTimeSlice, 
                 aes(x = longitude, y = latitude,  fill = ..level.., alpha = ..level..),
                 size = 0.1, bins = 16, geom = 'polygon') +
  scale_fill_gradient(low = "green", high = "red", limits=c(0,2000)) + # Color scale
  scale_alpha(range = c(0.1, 0.4), guide = "legend") + # Here is the alpha scale
  geom_text(label = twoAMTimeSlice$time[1], x = -104.95, y=39.775) +
  theme(plot.title = element_text(size = rel(1.5), vjust = 1),
        axis.title = element_blank(),
        text = element_text(size = 12)) +
  labs(title = "Criminal Occurrences by Time of Day")

所以这就是我的问题:我需要我的alpha刻度在我的所有地图上保持一致。目前,如果我使用不同的犯罪数量在不同时间制作图表,则alpha范围不会保持一致。这些在以下图片中很明显:

enter image description here

观察此图片中的绿色是如何透明的,红色是否更不透明。这是我想要应用于所有地图的正确比例。

enter image description here

在这里,观察绿色是如何非常不透明的。您还可以从上一张图片中看到图例更改。这是不好的。我希望这张照片中的绿色和最后一张一样不透明。

我使用limits参数scale_fill_gradient实现了 colors 的缩放比例。但是,当应用于scale_alpha时,此参数会给出不可思议的结果。

1 个答案:

答案 0 :(得分:0)

解决方案将限制更改为

  limits=c(0, 2000) 

(由OP在评论中回答)