我试图制作几张不同地图的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范围不会保持一致。这些在以下图片中很明显:
观察此图片中的绿色是如何透明的,红色是否更不透明。这是我想要应用于所有地图的正确比例。
在这里,观察绿色是如何非常不透明的。您还可以从上一张图片中看到图例更改。这是不好的。我希望这张照片中的绿色和最后一张一样不透明。
我使用limits
参数scale_fill_gradient
实现了 colors 的缩放比例。但是,当应用于scale_alpha
时,此参数会给出不可思议的结果。
答案 0 :(得分:0)
解决方案将限制更改为
limits=c(0, 2000)
(由OP在评论中回答)