web-dev-qa-db-fra.com

Formatage de la souris sur les étiquettes de manière parcellaire lors de l'utilisation de ggplotly

Je rencontre des difficultés avec la mise en forme du texte lorsque j'utilise ggplotly et la souris sur la fonctionnalité.

library(plotly)
df <- data.frame(a=letters, b=LETTERS, x=runif(26), y=runif(26))
g <- ggplot(df, aes(x,y)) + geom_point(aes(text=sprintf('letter: %s\nLetter: %s', a, b)))
g
(gg <- ggplotly(g))

Je voudrais avoir du texte formaté ou au moins une nouvelle ligne dans ma souris sur l'étiquette. Existe-t-il une bonne documentation sur la façon de concevoir cette souris sur bulle?

23
drmariod

plotly peut utiliser la balise HTML de saut de ligne. Vous pouvez obtenir ce que vous voulez après avoir utilisé le <br> tag pour une nouvelle ligne:

g <- ggplot(df, aes(x,y)) + 
       geom_point(aes(text=sprintf("letter: %s<br>Letter: %s", a, b)))

(gg <- ggplotly(g))
18
Jota

Voir l'argument tooltip de ggplotly () . Par exemple, pour afficher uniquement le nom de l'espèce (par exemple virginica pour le point supérieur droit) au survol:

g <- ggplot(tail(iris), aes(Petal.Length, Sepal.Length, text=Species)) + geom_point()
ggplotly(g, tooltip="text")

Autres exemples:

ggplotly(g, tooltip="x")             # Petal.Length: 5.7
ggplotly(g, tooltip="Petal.Length")  # Petal.Length: 5.7
ggplotly(g, tooltip=c("x", "y"))

Le dernier exemple montrera l'info-bulle à deux lignes

Petal.Length: 5.7
Sepal.Length: 6.7
27
Jon Olav Vik

Voici une solution utilisant fonction de carte de purrr . Cela m'a un peu surpris que cela fonctionne, mais j'aime ça.

J'ai mis en gras les titres "lettre:" et "lettre:". Cela affiche toujours les coordonnées x-y, que vous pouvez supprimer avec l'argument tooltip dans ggplotly().

df <- data.frame(a=letters, b=LETTERS, x=runif(26), y=runif(26))
g <- ggplot(df, aes(x,y)) + 
         geom_point(aes(text=map(paste('<b>letter:</b>', a, '<br>', '<b>Letter:</b>', b), HTML)))
g
(gg <- ggplotly(g))
0
MokeEire