Edite etiquetas en la información sobre herramientas para trazar mapas usando ggplot2 en r

Sé que esta pregunta se ha hecho varias veces, pero creo que parte de la sintaxis subyacente para plotly ha cambiado desde que se hicieron esas preguntas. Utilizandoggplotly() crear un mapa coroplético proporciona la información sobre herramientas predeterminada de long, lat, group y una de mis variables de mi estética. Entiendo que los mapas de información sobre herramientas solo son los aspectos estéticos. Todo lo que quiero hacer es personalizar la información sobre herramientas para que muestre algunas de las variables en mi conjunto de datos (incluidas las que no están asignadas a la estética) y otras (como las coordenadas). A continuación se muestra un ejemplo reproducible y lo que he probado hasta ahora. Seguí los consejos dados en respuesta a otras preguntas en vano.

#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)

Desde aquí he probado dos enfoques diferentes. El enfoque más exitoso me lleva allí en parte. Puedo agregar nuevas variables a la información sobre herramientas, pero no puedo hacer dos cosas: 1) No puedo deshacerme de otras variables que ya se muestran de forma predeterminada (desde la estética) y 2) No puedo cambiar el nombre de las variables por otro que no sea el nombre de su columna conjunto de datos (por ejemplo, me gustaría etiquetar "ejemplo3 como" Ejemplo III "). Aquí está ese enfoque:

#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

También intenté agregar lo siguiente pero no hizo nada:

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

¡Cualquier ayuda es muy apreciada!

ACTUALIZACIÓN: actualicéplotly instalando desde github en lugar de CRAN. Usando esta versión actualizada (4.0.0), lo hice aparte del camino allí.

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

Lo que sucede ahora simplemente me desconcierta. Esto agrega una información sobre herramientas adicional separada de la anterior. Esta nueva información sobre herramientas es exactamente lo que quiero, sin embargo, ambos aparecen, no a la vez, sino si muevo el mouse. Vea las dos capturas de pantalla a continuación:

Observe que la información sobre herramientas es de la misma unidad (Tirol). ¿Podría ser esto un error en el paquete? Esto no ocurre cuando se muestran otros gráficos, como una serie de tiempo en lugar de un mapa. También tenga en cuenta que asigné la etiqueta "Ejemplo I" (o II o III) y esto no se muestra en la nueva información sobre herramientas que agregué.

ACTUALIZACIÓN # 2: descubrí que la información sobre herramientas anterior (con la imagen larga y la lata mostrada) solo aparece al pasar el mouse sobre los bordes, así que me deshice degeom_path(color="black",linetype=1) comando (para eliminar los bordes) y ahora he logrado resolver ese problema con éxito. Sin embargo, todavía no puedo modificar las etiquetas que aparecen en la información sobre herramientas.

ACTUALIZACIÓN # 3: descubrí cómo editar las etiquetas pero SOLO PARA UNA VARIABLE. Que es una locura! Aquí está mi flujo de trabajo de principio a fin:

 #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

Eso produce la siguiente trama:

Observe que "Provincia" ahora está en mayúscula (no lo estaba antes). El truco fue agregartext = paste("Province:", NAME_1) a la estética SIN EMBARGO, cuando intenté agregar cambios de etiqueta adicionales usandotext2=paste("Example III:", example1), ocurre lo siguiente:

Observe que no puede representar el texto2 de la misma manera que representa el texto1. Por lo tanto, simplemente trato de agregar un duplicado sin el texto2 como en el siguiente:text=paste("Example III:", example1) -que produce el siguiente resultado impar:

Estoy empezando a pensar que algo tan simple como alternar las opciones de "leyenda" en la conversión de ggplot de plotly es imposible. ACTUALIZACIÓN # 4: Así que decidí abordar esto de otra manera. En cambio, decidí cambiar los nombres de las variables ellos mismos. Habría hecho esto desde el principio, excepto que no estaba seguro de si / cómo ggplot2 acepta variables con espacios -i descubrí`variable` Eso puede funcionar. Así que seguí adelante y volví a etiquetar las variables. Funciona -KINDA. El problema es que el texto aparece con comillas a su alrededor. ¡Ahora necesito una forma de deshacerme de estos! ¿Alguna idea de alguien? ¡Gracias! Aquí hay una imagen de lo que quiero decir con citas en el texto:

Respuestas a la pregunta(1)

Su respuesta a la pregunta