У меня блестящее приложение, которое берет набор данных, охватывающий 8 лет, и разбивает его по месяцам.Затем с помощью ползунка даты он создает ggplot, используя только данные за этот месяц.
Используемый ggplot:
ggplot() +
geom_map(
map = wrld, data = wrld, aes(long, lat, map_id=region),
color = "grey", fill ="white", size=0.1
) +
geom_point(
data = dat(), aes(longitude, latitude, size = freq),
shape=21, fill = "red", color = "white", stroke=0.01
) +
scale_size(name = "# IPs", label=scales::comma, range = c(1,10)) +
ggalt::coord_proj("+proj=wintri") +
ggthemes::theme_map() +
theme(legend.justification = "center") +
theme(legend.position = "bottom") +
labs(title=paste("Post frequency ", shiny())) +
annotate("text", x = 0, y = -60, label = "Bots")
Реактивные элементы dat()
и shiny()
создаются с помощью этого кода:
shiny <- reactive({
format(as.Date(input$slider), "%Y-%m")
})
dat <- reactive({
count <- count(data.frame(splitted[[shiny()]]))
counted <- ddply(count,"city_name",summarize,longitude=mean(longitude),latitude=mean(latitude),freq=sum(freq))
counted <- counted[order(counted$freq),]
counted[nrow(counted),1] <- "Bots"
counted[nrow(counted),2:3] <- c(0,-55)
counted
})
Пример *Показано 1011 *:
> head(splitted['2012-07'])
$`2012-07`
city_name longitude latitude dateline ipaddress date
348812 Oak Lawn -87.7516 41.7143 1341093604 67.175.106.62 2012-07-01 00:00:04
348813 Richmond -84.2955 37.7546 1341093617 76.177.28.76 2012-07-01 00:00:17
348814 Lynbrook -73.6741 40.6571 1341093624 72.68.156.111 2012-07-01 00:00:24
348815 Oak Lawn -87.7516 41.7143 1341093680 67.175.106.62 2012-07-01 00:01:20
348816 Las Vegas -115.0669 36.1730 1341093690 24.253.64.114 2012-07-01 00:01:30
348817 Richmond -84.2955 37.7546 1341093698 76.177.28.76 2012-07-01 00:01:38
348818 Cleveland -83.7500 34.5839 1341093716 67.140.236.247 2012-07-01 00:01:56
348819 Las Vegas -115.0669 36.1730 1341093782 24.253.64.114 2012-07-01 00:03:02
348820 Lynbrook -73.6741 40.6571 1341093826 72.68.156.111 2012-07-01 00:03:46
348821 Oak Lawn -87.7516 41.7143 1341093886 67.175.106.62 2012-07-01 00:04:46
Блестящее приложение работает нормально, и карта корректно обновляется.Проблема в том, что масштаб легенды обновляет каждую карту.Результатом является то, что карта «выглядит» одинаково, независимо от фактического уровня частоты.Посмотрите на эти два месяца:
Размер точек одинаков, хотя частота на первом изображении до4000, а частота на втором снимке - до 80. Причину этого можно понять, если посмотреть на общее количество сообщений за день с течением времени:
Яне совсем понимая, что мне нужно изменить на ggplot, чтобы использовать одну и ту же «шкалу размеров» для всех периодов времени.
Весь файл app.R можно просмотреть в https://pastebin.com/WjedbxT3
К сожалению, я не могу поделиться набором данных из 887 000 точек.