Отредактируйте метки во всплывающей подсказке для карт-графиков, используя ggplot2 в r

Я знаю, что этот вопрос задавался несколько раз, но я думаю, что с тех пор, как были заданы эти вопросы, изменился некоторый основной синтаксис для сюжета. С помощьюggplotly() для создания картограммы по умолчанию отображается всплывающая подсказка long, lat, group и одна из моих переменных из моей эстетики. Я понимаю, что всплывающая подсказка отображает только то, что в эстетике. Все, что я хочу сделать, это настроить всплывающую подсказку, чтобы она отображала некоторые переменные в моем наборе данных (включая переменные, не связанные с эстетикой), а не другие (например, координаты). Ниже приведен воспроизводимый пример и то, что я пробовал до сих пор. Я последовал совету, данному в ответе на другие вопросы, но безрезультатно.

#Load dependencies
library(rgeos)
library(stringr)
library(rgdal)
library(maptools)
library(ggplot2)
library(plotly)

#Function to read shapefile from website
dlshape=function(shploc, shpfile) {
  temp=tempfile()
  download.file(shploc, temp)
  unzip(temp)
  shp.data <- sapply(".", function(f) {
    fp <- file.path(temp, f)
    return(readOGR(".",shpfile))
  })
}

austria <- dlshape(shploc="http://biogeo.ucdavis.edu/data/gadm2.8/shp/AUT_adm_shp.zip", 
                   "AUT_adm1")[[1]]
#Create random data to add as variables
austria@data$example1<-sample(seq(from = 1, to = 100, by = 1), size = 11, replace = TRUE)
austria@data$example2<-sample(seq(from = 1, to = 100, by = 1), size = 11, replace = TRUE)
austria@data$example3<-sample(seq(from = 1, to = 100, by = 1), size = 11, replace = TRUE)

#Fortify shapefile to use w/ ggplot
austria.ft <- fortify(austria, region="ID_1")
data<-merge(austria.ft, austria, region="id", by.x = "id", by.y = "ID_1")

#Save as ggplot object    
gg<-ggplot(data, aes(x = long, y = lat, fill = example1, group = group)) + 
  geom_polygon() + geom_path(color="black",linetype=1) + 
  coord_equal() +
  scale_fill_gradient(low = "lightgrey", high = "darkred", name='Index') +xlab("")+ylab("") + 
  theme(axis.text = element_blank(), 
        axis.title = element_blank(), 
        axis.ticks = element_blank()) + 
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), 
        panel.background = element_blank(), axis.line = element_line(colour = "black")) + 
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), 
        panel.background = element_blank(), axis.line = element_line(colour = "black"))

#Plot using ggplotly
ggplotly(gg)

Отсюда я попробовал два разных подхода. Самый успешный из подходов частично привел меня туда. Я могу добавить новые переменные к всплывающей подсказке, но я не могу сделать две вещи: 1) я не могу избавиться от других переменных, уже отображаемых по умолчанию (из эстетики), и 2) я не могу переименовать переменные в нечто иное, чем их имя столбца из набор данных (например, я хотел бы обозначить «example3 как« Пример III »). Вот этот подход:

#Save as a new ggplot object except this time add ``label = example3`` to the aesthetics
 gg2<-ggplot(data, aes(x = long, y = lat, fill = example1, group = group, label = example3)) + 
  geom_polygon() + geom_path(color="black",linetype=1) + 
  coord_equal() +
  scale_fill_gradient(low = "lightgrey", high = "darkred", name='Index') +xlab("")+ylab("") + 
  theme(axis.text = element_blank(), 
        axis.title = element_blank(), 
        axis.ticks = element_blank()) + 
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), 
        panel.background = element_blank(), axis.line = element_line(colour = "black")) + 
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), 
        panel.background = element_blank(), axis.line = element_line(colour = "black"))

#Save as plotly object then plot
gg2 <- plotly_build(gg2)
gg2

Я также попытался добавить следующее, но ничего не получилось:

gg2$data[[1]]$text <- paste("Example I:", data$example1, "<br>",
                           "Example II:", data$example2, "<br>",
                           "Example III:", data$example3)

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

ОБНОВЛЕНИЕ: я обновилplotly установив из github вместо CRAN. Используя эту обновленную версию (4.0.0) я сделал это отдельно от пути там.

gg2$x$data[[2]]$text <- paste("Example I:", data$example1, "<br>",
                             "Example II:", data$example2, "<br>",
                             "Example III:", data$example3)
gg2

То, что происходит сейчас, просто сбивает меня с толку. Это добавляет дополнительную подсказку, отдельную от предыдущей. Эта новая всплывающая подсказка - именно то, что мне нужно, однако оба они появляются - не сразу, а если я наведу курсор мыши. Смотрите два скриншота ниже:

Обратите внимание, что эти подсказки относятся к одному и тому же отряду (Тироль). Может ли это быть ошибкой в ​​пакете? Это не происходит, когда вместо карты отображаются другие графики, такие как временные ряды. Также обратите внимание, что я присвоил метку «Пример I» (или II или III), и это не отображается в новой добавленной всплывающей подсказке.

ОБНОВЛЕНИЕ № 2: Я понял, что старая всплывающая подсказка (с указанием long и lat) появляется только при наведении курсора на границы, поэтому я избавился отgeom_path(color="black",linetype=1) команда (как удалить границы), и теперь мне удалось успешно решить эту проблему. Однако я все еще не могу изменить метки, которые появляются во всплывающей подсказке.

ОБНОВЛЕНИЕ № 3: Я понял, как редактировать метки, но только для одной переменной. Какой орехи! Вот мой рабочий процесс от начала до конца:

 #Load dependencies
    library(rgeos)
    library(stringr)
    library(rgdal)
    library(maptools)
    library(ggplot2)
    library(plotly)

    #Function to read shapefile from website
    dlshape=function(shploc, shpfile) {
      temp=tempfile()
      download.file(shploc, temp)
      unzip(temp)
      shp.data <- sapply(".", function(f) {
        fp <- file.path(temp, f)
        return(readOGR(".",shpfile))
      })
    }

    austria <- dlshape(shploc="http://biogeo.ucdavis.edu/data/gadm2.8/shp/AUT_adm_shp.zip", 
                       "AUT_adm1")[[1]]
    #Create random data to add as variables
    austria@data$example1<-sample(seq(from = 1, to = 100, by = 1), size = 11, replace = TRUE)
    austria@data$example2<-sample(seq(from = 1, to = 100, by = 1), size = 11, replace = TRUE)
    austria@data$example3<-sample(seq(from = 1, to = 100, by = 1), size = 11, replace = TRUE)

    #Fortify shapefile to use w/ ggplot
    austria.ft <- fortify(austria, region="ID_1")
    data<-merge(austria.ft, austria, region="id", by.x = "id", by.y = "ID_1")

    #Save as ggplot object    
    gg<-ggplot(data, aes(x = long, y = lat, fill = example1, group = group, text = paste("Province:", NAME_1))) + 
      geom_polygon(color="black", size=0.2) + 
      coord_equal() +
      scale_fill_gradient(low = "lightgrey", high = "darkred", name='Index') +xlab("")+ylab("") + 
      theme(axis.text = element_blank(), 
            axis.title = element_blank(), 
            axis.ticks = element_blank()) + 
      theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), 
            panel.background = element_blank(), axis.line = element_line(colour = "black")) + 
      theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(), 
            panel.background = element_blank(), axis.line = element_line(colour = "black"))


gg <- plotly_build(gg)
gg

Это дает следующий сюжет:

Обратите внимание, что «Провинция» теперь пишется с заглавной буквы (не было раньше). Трюк был добавлениемtext = paste("Province:", NAME_1) к эстетике. ОДНАКО, когда я пытался добавить дополнительные изменения метки, используяtext2=paste("Example III:", example1)происходит следующее:

Обратите внимание, что он не может отображать текст2 так же, как и текст1. Поэтому вместо этого я просто пытаюсь добавить дубликат без text2, как показано ниже:text=paste("Example III:", example1) - который дает следующий странный результат:

Я начинаю думать о такой простой вещи, как переключение опций «легенды» в ggplot-конвертации plotly, невозможно. ОБНОВЛЕНИЕ № 4: Поэтому я решил подойти к этому по-другому. Вместо этого я решил изменить сами имена переменных. Я бы сделал это с самого начала, за исключением того, что я не был уверен, что ggplot2 / как принимает переменные с пробелами`variable` это может работать. Поэтому я пошел дальше и переименовал переменные. Это работает -KINDA. Проблема в том, что текст появляется с кавычками вокруг них. Теперь мне нужен способ избавиться от них !!! Любые идеи кто-нибудь? Спасибо! Вот изображение того, что я подразумеваю под цитатами в тексте:

Ответы на вопрос(1)

Ваш ответ на вопрос