2017-10-13 7 views
0

J'essaie de créer un graphique en aires empilées dans R en utilisant le paquet Plotly dans le cadre d'une application Shiny et je voudrais comparer les données sur hover. Cependant, je cache la barre de mode pour des raisons de conception, donc j'ai besoin de déclarer cette option dans mon code car actuellement le pointeur n'est affiché que pour le point de données le plus proche du curseur. Cependant, le Plotly for R reference ne donne que les options "x" (info-bulle sur l'axe des x), "y" (info-bulle sur l'axe des y), "plus proche" (affiche l'info-bulle pour le point de données le plus proche) et FALSE (désactive l'info-bulle).R: Réglez Plotly hovermode sur "compare data on hover"

Existe-t-il un moyen de faire ce que je voudrais? Notez que cette question est à peu près le contraire de this one.

Le code J'utilise est:

plot_ly(data2, 
     x = ~Year, 
     y = ~B, 
     name = 'In-centre', 
     type = 'scatter', 
     mode = 'none', 
     fill = 'tozeroy', 
     fillcolor = '#F5FF8D', 
     hoverinfo = 'y') %>% 
add_trace(y = ~A, 
      name = 'At home', 
      fillcolor = '#50CB86', 
      hoverinfo = 'y') %>% 
layout(xaxis = list(title = "", 
        showgrid = FALSE, 
        tickangle = 270, 
        dtick = 1, 
        tickfont = list(size = 11)), 
     yaxis = list(title = "", 
        ticklen = 8, 
        tickcolor = "#EEEEEE", 
        range = c(-2, 101), 
        tick0 = 0, 
        dtick = 10, 
        tickfont = list(size = 11)), 
     showlegend = TRUE, 
     legend = list(x = 0, 
        y = -0.2, 
        orientation = "h", 
        traceorder = "normal"), 
     margin = list(t = 25, b = 50, r = 10, l = 40)) %>% 
config(displayModeBar = FALSE) 

où une (version simplifiée) est données2:

Year A  B 
2006 18.0 82.0 
2007 19.2 78.3 
2008 17.9 80.2 
2009 20.1 77.7 

Répondre

2

Ajouter layout(hovermode = 'compare') à votre code:

data2 <- read.table(text=" 
Year A  B 
2006 18.0 82.0 
2007 19.2 78.3 
2008 17.9 80.2 
2009 20.1 77.7 
", header=T) 

library(plotly) 
library(dplyr) 
plot_ly(data2, 
     x = ~Year, 
     y = ~B, 
     name = 'In-centre', 
     type = 'scatter', 
     mode = 'none', 
     fill = 'tozeroy', 
     fillcolor = '#F5FF8D', 
     hoverinfo = 'y') %>% 
add_trace(y = ~A, 
      name = 'At home', 
      fillcolor = '#50CB86', 
      hoverinfo = 'y') %>% 
layout(xaxis = list(title = "", 
        showgrid = FALSE, 
        tickangle = 270, 
        dtick = 1, 
        tickfont = list(size = 11)), 
     yaxis = list(title = "", 
        ticklen = 8, 
        tickcolor = "#EEEEEE", 
        range = c(-2, 101), 
        tick0 = 0, 
        dtick = 10, 
        tickfont = list(size = 11)), 
     showlegend = TRUE, 
     legend = list(x = 0, 
        y = -0.2, 
        orientation = "h", 
        traceorder = "normal"), 
     margin = list(t = 25, b = 50, r = 10, l = 40)) %>% 
config(displayModeBar = FALSE) %>% 
layout(hovermode = 'compare') 

EDIT @OctavianCorlade m'a envoyé un im Remarque importante sur la solution donnée ci-dessus: "La réponse fournie précédemment fonctionne, simplement parce que toute chaîne différente des options disponibles produirait le même résultat. . hovermode = 'x' est la façon de le faire, la réalisation de l'exacte même résultat »
Par conséquent documenté, selon la suggestion de @OctavianCorlade, on peut utiliser:

layout(hovermode = 'x') 

enter image description here

+0

Je me demande pourquoi ils ne » t l'inclure dans le guide de référence? –