2016-06-28 13 views
5

Ich baue ein Plotly-Plot basierend auf einem ggplot in R. Ich möchte die Größe des Textes in den Hover-Boxen erhöhen. Angenommen, ich habe ein Streudiagramm wie folgt:Ändern Sie die Größe des Hover-Textes in Plotly

library(plotly) 
library(ggplot2) 

d <- data.frame(a = sample(1:50, 30, T), 
       b = sample(1:50, 30, T), 
       col = factor(sample(1:3, 30, T))) 

gg <- ggplot() + geom_point(aes(x = a, y = b, color = col), data = d) 

p <– plotly_build(gg) 
p 

Gibt es eine Möglichkeit, die Größe des Hover-Textes zu ändern?

+0

Bitte sehen Sie meine Antwort unten für, was ich glaube, ist der richtige Weg, dies in R zu erreichen – rmg

Antwort

4

Derzeit scheint es keine integrierte Möglichkeit zu geben, zusätzliche Attribute zu übergeben, um das Hover-Erscheinungsbild direkt über plotly zu definieren (siehe github issue #102). In der Problembeschreibung wird jedoch der Name der Klasse angezeigt, die für den Hover-Text verwendet wird. Dies ist .hovertext. Die einfachste Lösung wäre, Sie als HTML-Datei zu speichern und fügen Sie das CSS unten per Hand irgendwo in den Teil des HTML. Falls Sie auch die Größe des Legendentextes ändern möchten, behalten Sie die .legendtext Zeilen bei, wenn nicht, löschen Sie sie.

<style type="text/css"> 
.hovertext text { 
    font-size: 100px !important; 
} 
.legendtext { 
    font-size: 30px !important; 
} 
</style> 

Wenn Sie das CSS mit R injizieren möchten, statt es von Hand zu tun, haben Sie mehrere Möglichkeiten.

# the CSS we want to inject 
css <- ' 
<style type="text/css"> 
.hovertext text { 
    font-size: 100px !important; 
} 
.legendtext { 
    font-size: 30px !important; 
} 
</style>' 

library(plotly) 
library(htmltools) 
library(htmlwidgets) 

1: Ändern Sie die HTML-Datei nach Erstellung

x <- as.widget(p)         # convert to htmlwidget object 
saveWidget(x, file="test_edited_1.html")   # and save to file 
l <- readLines("test_edited_1.html")    # read file 
h <- paste(l, collapse= " ")    
hh <- strsplit(h, "<head>")[[1]]     # split where head appears 
h.new <- paste(hh[1], css, hh[-1], collapse=" ") # insert CSS 
writeLines(h.new, "test_edited_1.html")   # write back to file 

2: Ändern Sie das Objekt, von dem die HTML-Datei

x <- as.widget(p)         # convert to htmlwidget object 
# add a the code directly into <head> using `htmltools::htmlDependency` 
x$dependencies <- list(
    htmlDependency(
     name = "custom", 
     version="1", 
     src="", 
     head=css) 
    ) 
saveWidget(x, file="test_edited_2.html") 

erstellt wird, während das zweite Werk, ich bin nicht sicher, wenn es eine ordnungsgemäße Verwendung von htmlDependency ist.

Ergebnis

enter image description here

1

Es ein update zu plotly vor kurzem wurde, dass Sie verschiedene Eigenschaften des Hover-Text zu ändern. Hier ist ein Beispiel in R:

plot_ly(x=c(1:42), 
     y=c(1:42), 
     text=c(1:42), 
     type="bar")%>% 
    layout(
    title = paste("Top 42"), 
    hoverlabel = list(font=list(size=10)) 
) 

Es gibt auch Optionen Schriftfarbe zu ändern, bgcolor, und vieles mehr.