Info-bulle lorsque vous mouseover un ggplot sur brillant
Je suis la construction d'une brillante application.
Je suis traçage de graphiques à l'aide de ggplot.
Quand j'ai passer la souris sur le points sur le graphique, je veux une info-bulle indiquant l'une des colonnes dans le bloc de données (personnalisable info-bulle)
Pouvez-vous s'il vous plaît suggérer la meilleure façon d'avancer.
Application Simple:
# ui.R
shinyUI(fluidPage(
sidebarLayout(
sidebarPanel(
h4("TEst PLot")),
mainPanel(
plotOutput("plot1")
)
)
))
# server.R
library(ggplot2)
data(mtcars)
shinyServer(
function(input, output) {
output$plot1 <- renderPlot({
p <- ggplot(data=mtcars,aes(x=mpg,y=disp,color=factor(cyl)))
p <- p + geom_point()
print(p)
})
}
)
Quand je souris sur les points, je veux qu'elle affiche mtcars$wt
- Regarder dans Rcharts: stackoverflow.com/questions/17524227/... ou GooglveVis:cran.r-project.org/web/packages/googleVis/vignettes/...
- Merci. Je dois utiliser les deux. Mais je veux l'utiliser ggplot pour le traçage. Et l'utiliser à son plein de souplesse. Tout ce que je besoin est un outil de pointe.
- animint est un package R qui convertit ggplot2 au format SVG. Voici un exemple d'intégration de ggplot2/animint parcelles de shiny -- cpsievert.shinyapps.io/animintShiny Pour ajouter une info-bulle, vous auriez mis
tooltip=wt
à l'intérieur deaes()
- Une autre option serait d'utiliser le gridSVG paquet de convertir au format SVG vous-même, puis ajouter une info-bulle avec le SVGAnnotation paquet.
- Je vous remercie beaucoup.
- La nouvelle shinyBS emballage peut être très utile pour ce besoin spécifique: ebailey78.github.io/shinyBS/docs/.... Il ajoute bootstrap fonctionnalités brillantes et les info-bulles sont une partie d'entre eux.
- avez-vous été en mesure de résoudre ce problème? J'aimerais code qui répond à cette question
Vous devez vous connecter pour publier un commentaire.
Si je comprends correctement à la question, ce qui peut être réalisé avec la récente mise à jour de la brillante forfait pour les ggplot2 et le forfait de base. À l'aide de cet exemple de Winston Chang et Joe Cheng http://shiny.rstudio.com/gallery/plot-interaction-basic.html , j'ai été en mesure de résoudre ce problème. Passez la souris est maintenant un argument d'entrée en plotOutput() de sorte qu'il est ajouté à l'interface utilisateur avec un verbatimTextOutput pour afficher mtcars$wt pour le point planait au-dessus.
Dans le serveur j'ai simplement procéder à distance à un vecteur qui calcule la distance de la souris à n'importe quel point dans l'intrigue et si cette distance est inférieure à 3 (fonctionne dans cette application) puis il montre mtcars$wt pour le point le plus proche de votre souris. Pour être clair d'entrée de$plot_hover renvoie une liste d'info à propos de l'emplacement de la souris et seulement x et y éléments sont extraits à partir d'une entrée$plot_hover dans cet exemple.
J'espère que cela aide!
Vous pouvez également utiliser un peu de JQuery et à la condition que
renderUI
pour afficher une info-bulle personnalisée à proximité du pointeur.ÉDITÉ:
Après ce post j'ai cherché sur internet pour voir si il pourrait être fait plus en douceur et trouvé cette merveilleux info-bulle personnalisée pour ggplot. Je crois qu'il ne peut guère faire mieux que ça.
À l'aide de
plotly
, vous pouvez traduire votreggplot
dans une version interactive de lui-même. Il suffit d'appeler la fonctionggplotly
sur votreggplot
objet:Pour les personnalisations de ce qui est affiché dans l'info-bulle, regardez par exemple ici.
J'ai publié, en collaboration avec mon collègue, un paquet appelé GGTips (il n'est pas sur l'CRAN) qui ne font juste que, l'ajout d'info-bulles sur les parcelles. Nous avons créé notre propre solution parce que nous avons de la difficulté à recréer nos parcelles complexes à l'aide de plotly ce n'est pas 100% compatible avec ggplot2. Repo Git avoir un lien vers la démo en ligne.