2013-08-06 11 views
6

Vorrei aggiungere alcuni valori aggiuntivi al suggerimento standard Highcharts tramite rCharts. Esempio codice:Aggiungi valori a rCharts hPlot tooltip

require(rCharts) 
df <- data.frame(x = c(1:5), y = c(5:1), 
      z = c("A", "B", "C", "D", "E"), 
      name = c("K", "L", "M", "N", "O")) 
h1 <- hPlot(x = "x", y = "y", data = df, type = "scatter", group = "z") 

Questo genera un suggerimento con i valori x e y. E il nome della serie z come titolo. Ora voglio anche aggiungere i valori del nome al suggerimento. Tuttavia non ho idea di come sia fatto.

risposta

1

Dopo diversi anni, ho una risposta.

Sembra che queste funzioni di wrapper come hPlot() non supportino variabili di descrizione comandi aggiuntive anche con una semplice funzione di formattazione personalizzata. Vedere l'esempio di lavoro sottostante in base al set di dati della domanda.

require(rCharts) 
# create data frame 
df <- data.frame(x = c(1:5), y = c(5:1), 
       z = c("A", "B", "C", "D", "E"), 
       name = c("K", "L", "M", "N", "O")) 

# Plot using hPlot() approach 
h1 <- hPlot(x = "x", y = "y", data = df, type = "scatter", group = "z") 
h1$tooltip(borderWidth=0, followPointer=TRUE, followTouchMove=TRUE, shared = FALSE, 
      formatter = "#! function(){return 'X: ' + this.point.x + '<br>Y: ' + this.point.y + '<br>Z: ' + this.point.z + '<br>Name: ' + this.point.name;} !#") 
h1 

hplot-rcharts

descrizioni comandi non funzionano nell'esempio di cui sopra, perché le variabili nella matrice non sono chiamati. Vedi str(h1).

# Plot using manual build 
h1 <- rCharts:::Highcharts$new() 
dlev <- levels(factor(as.character(df$z))) 
for(i in 1:length(dlev)) 
{ 
    h1$series(data = toJSONArray2(df[df$z==dlev[i],,drop=F], json = F,names=T), name = dlev[i],type = c("scatter"), marker = list(radius = 3)) 
} 
h1$tooltip(borderWidth=0, followPointer=TRUE, followTouchMove=TRUE, shared = FALSE, 
      formatter = "#! function(){return 'X: ' + this.point.x + '<br>Y: ' + this.point.y + '<br>Z: ' + this.point.z + '<br>Name: ' + this.point.name;} !#") 
h1 

manual-build-rcharts

Questo funziona perché le variabili array vengono denominati utilizzando names=T in linea di partenza h1$series.... Vedi str(h1).

Questo tipo di soluzione risolve il problema del tooltip, ma potrebbero esserci altri problemi con gli array denominati. Ad esempio, rompe le cose in un ambiente app brillante. Ci deve essere un motivo per cui hPlot() non utilizza gli array con nome.

3

rCharts è un ottimo pacchetto. Ma non è ancora ben documentato (forse mi manca questo punto). Penso che sia necessario ridefinire la nuova funzione JS per l'attributo tooltip. Qualsiasi valore letterale JS deve essere racchiuso tra #! e !# . Ecco un inizio, ma non funziona come immagino (penso che è un buon inizio):

h1$tooltip(formatter = "#! function() { return 'x: '  + this.point.x + 
               'y: ' + this.point.y + 
               'name: ' + this.point.group; } !#") 
+0

Effettivamente questo è un buon inizio. Ho appena trovato la documentazione del formatter di highcharts tooltip sul loro sito. – jeroen81

+3

@ jeroen81 Vuoi dire che ci sono documenti da qualche parte? Puoi aggiungere un collegamento o aggiungere risposte se riesci a ottenere risultati migliori? – agstudy

+0

@agstudy: dai un'occhiata qui: http://api.highcharts.com/highcharts#plotOptions.column.tooltip – pfuhlert