Edit Labels im Tooltip für Plotkarten mit ggplot2 in r

Ich weiß, dass diese Frage mehrmals gestellt wurde, aber ich denke, dass sich die zugrunde liegende Syntax für plotly geändert hat, seitdem diese Fragen gestellt wurden. @ Verwendggplotly() zum Erstellen einer Choroplethen-Map enthält den Standard-Tooltip "Long", "Lat", "Group" und eine meiner Variablen aus meiner Ästhetik. Ich verstehe, dass Tooltips nur das abbilden, was in der Ästhetik liegt. Alles, was ich tun möchte, ist, die QuickInfo so anzupassen, dass einige der Variablen in meinem Dataset (einschließlich derjenigen, die nicht der Ästhetik zugeordnet sind) und andere (wie die Koordinaten) angezeigt werden. Unten ist ein reproduzierbares Beispiel und was ich bisher ausprobiert habe. Ich habe den Rat befolgt, der als Antwort auf andere Fragen ohne Erfolg gegeben wurde.

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

on hier aus habe ich zwei verschiedene Ansätze ausprobiert. Der erfolgreichste Ansatz bringt mich teilweise dorthin. Ich kann dem Tooltip neue Variablen hinzufügen, aber ich kann zwei Dinge nicht tun: 1) Ich kann andere Variablen, die bereits standardmäßig angezeigt werden (aus ästhetischen Gründen), nicht entfernen und 2) Ich kann die Variablen nicht anders als ihren Spaltennamen aus der umbenennen Datensatz (zum Beispiel möchte ich "example3" als "Example III" bezeichnen. Hier ist dieser Ansatz:

#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

Ich habe auch versucht, Folgendes hinzuzufügen, aber es hat nichts getan:

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

Jede Hilfe wird sehr geschätzt!

UPDATE: Ich habe @ aktualisieplotly durch Installation von Github anstelle von CRAN. Mit dieser aktualisierten Version (4.0.0) habe ich es anders gemacht.

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

Was jetzt passiert verwirrt mich einfach. Dies fügt eine zusätzliche QuickInfo hinzu, die von der vorherigen getrennt ist. Dieser neue Tooltip ist genau das, was ich möchte, aber beide werden angezeigt - nicht sofort, aber wenn ich meine Maus bewege. Siehe die beiden Screenshots unten:

Hinweis, diese Tooltips stammen aus derselben Einheit (Tirol). Könnte dies ein Fehler im Paket sein? Dies tritt nicht auf, wenn andere Diagramme wie Zeitreihen anstelle einer Karte angezeigt werden. Beachten Sie auch, dass ich die Bezeichnung "Beispiel I" (oder II oder III) zugewiesen habe und dies in dem neuen, von mir hinzugefügten Tooltip nicht angezeigt wird.

UPDATE # 2: Ich habe herausgefunden, dass der alte Tooltip (mit langem und lat gezeigt) nur erscheint, wenn ich über die Grenzen schwebe, also habe ich das @ losgewordgeom_path(color="black",linetype=1) Befehl (um die Grenzen zu entfernen) und jetzt habe ich es geschafft, dieses Problem erfolgreich zu lösen. Ich kann die Beschriftungen in der QuickInfo jedoch immer noch nicht ändern.

UPDATE # 3: Ich habe herausgefunden, wie ich die Labels bearbeite, aber NUR FÜR EINEN VARIABLEN. Welches ist verrückt! Hier ist mein Workflow von Anfang bis Ende:

 #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

Das erzeugt das folgende Diagramm:

Bitte beachten Sie, dass "Provinz" jetzt groß geschrieben wird (vorher nicht). Der Trick war das Hinzufügen vontext = paste("Province:", NAME_1) zur ästhetik. JEDOCH, als ich versuchte, zusätzliche Beschriftungsänderungen mit @ hinzuzufügtext2=paste("Example III:", example1), Folgendes tritt auf:

Bitte beachten Sie, dass Text2 nicht so gerendert werden kann, wie Text1 gerendert wird. Also versuche ich stattdessen einfach, ein Duplikat ohne text2 wie folgt hinzuzufügen:text=paste("Example III:", example1) -die das folgende ungerade Ergebnis erzeugt:

Ich fange an, etwas so Einfaches wie das Umschalten der "Legenden" -Optionen in der ggplot-Konvertierung von plotly für unmöglich zu halten. UPDATE Nr. 4: Also habe ich mich dazu entschlossen, es anders anzugehen. Stattdessen habe ich beschlossen, die Variablennamen selbst zu ändern. Ich hätte dies von Anfang an getan, außer ich war mir nicht sicher, ob / wie ggplot2 Variablen mit Leerzeichen akzeptiert - ich habe es herausgefunden`variable` das kann funktionieren. Also habe ich die Variablen umbenannt. Es funktioniert -KINDA. Das Problem ist, dass der Text in Anführungszeichen angezeigt wird. Jetzt brauche ich einen Weg, diese loszuwerden !!! Irgendwelche Ideen? Vielen Dank! Hier ist ein Bild von dem, was ich mit Zitaten im Text meine:

Antworten auf die Frage(2)

Ihre Antwort auf die Frage