R Plotly Map, чтение при наведении текста из 2 кадров данных - PullRequest
0 голосов
/ 25 апреля 2018

В настоящее время у меня есть карта, на которой отображаются участки из 2 разных фреймов данных.У меня есть красные точки для одного набора и синие точки для другого набора.Я могу получить текст для наведения для чтения из одного из фреймов данных, но как мне заставить его читать из другого при наведении на другой цветной сайт?

вот мой код пока

.... Получить многоугольник мира и извлечь UK

library(maps)
UK <- map_data("world") %>% filter(region=="UK")

png("JCMap.png")

JCMap <- ggplot() +
  geom_polygon(data = UK, aes(x=long, y = lat, group = group), fill="grey", color = "dark grey",alpha=0.3) +

  geom_point( data=sitesgeo, aes(x=long, y=lat), colour = 'blue', alpha = 0.5)+

  geom_point( data=SCBenchmarks, aes(x=long, y=lat), size = 2, colour = 'red') +

  theme_void() + ylim(50,59) + coord_map()+

  theme(legend.position="none")+

  ggtitle("Sites")+
  theme(
    plot.background = element_rect(fill = "#f5f5f2", color = NA),

    panel.background = element_rect(fill = "#f5f5f2", color = NA), 

    plot.title = element_text(size= 16, hjust=0.1, color = "#4e4d47", margin = margin(b = -0.1, t = 0.4, l = 2, unit = "cm")),

  )
print(JCMap)

JCMap

..... сделать его интерактивным!

library(plotly)

p=SCBenchmarks %>%

  mutate( mytext=paste("Site: ", site_name, "\n", "Customers: ", claimant_key, sep="")) %>%

  ggplot() +

  geom_polygon(data = UK, aes(x=long, y = lat, group = group), fill="grey", alpha=0.3) +

  geom_point(data=sitesgeo,aes(x=long, y=lat), colour = 'blue', alpha = 0.5) +

  geom_point(aes(x=long, y=lat, text=mytext), colour = 'red', alpha = 1) +


  scale_size_continuous(range=c(1,15)) +

  scale_color_viridis(option="inferno", trans="log" ) +

  scale_alpha_continuous(trans="log") +

  theme_void() +

  ylim(50,59) +

  coord_map() +

  theme(legend.position = "none")


p=ggplotly(p, tooltip="text")

p

Любая помощь будет высоко ценится

Приветствия

1 Ответ

0 голосов
/ 04 мая 2018

Я понял это с небольшой помощью от друга, вероятно, не самый удобный способ сделать это, но это работает .... см. Код ниже

## сюжет

SCBenchmarks <- SCBenchmarks%>%

mutate (mytext = paste (site_name, "\ n", "Customers:", customer_key, "\ n", "Customers per Person:", Cust_Per_Person, "\ n", sep = "")))

Финал <- Финал%>%

mutate (mytext = paste (имя_сайта, "\ n", имя_круга, "\ n", "Customers:", Customer_Count, "\ n", sep = "")) *

## Заставить статический сюжет вызвать этот текст:

p <- ggplot () + geom_polygon (data = UK, aes (x = long, y = lat, group = group), fill = "grey", alpha = 0.3) + </p>

geom_jitter (data = Final, aes (x = long, y = lat, text = mytext), color = 'blue', alpha = 0.5) +

geom_jitter (data = SCBenchmarks, aes (x = long, y = lat, text = mytext), color = 'red', alpha = 1) +

scale_size_continuous (range = c (1,15)) +

scale_color_viridis (option = "inferno", trans = "log") +

scale_alpha_continuous (trans = "log") +

theme_void () +

Илим (50,59) +

ordin_map () +

theme (legend.position = "none")

p = ggplotly (p, tooltip = "text")

р

...