2012-01-02 13 views
5

qualcuno sa se è possibile creare qualcosa di simile in Highcharts:highchart: aggiungere immagini superiore del grafico su ogni colonna

Highchart question

È circa le icone del tempo sulla parte superiore. Li ho aggiunti come un "grafico a dispersione" che è bello, quindi le immagini/grafici possono essere disabilitate. Ma li voglio sempre al top. Ad esempio: y = 20px o qualcosa del genere. È possibile farlo con Highchart? So che impostare i loro dati su "30 celcius", ma ciò farebbe confondere il grafico se la temperatura salisse a 30 gradi.

risposta

0

Dato che i grafici alti sono solo SVG puoi sempre andare direttamente e manipolare l'SVG per mostrare le immagini che vuoi, di solito con solo CSS. Puoi ispezionare il grafico con l'ispettore web di Chrome e trovare gli elementi che desideri modellare. Devo avvisarti che, avendo io stesso fatto dei diagrammi elevati personalizzati in passato, ho reso difficile l'aggiornamento a nuove versioni.

8

È possibile utilizzare un trucco di avere due assi X, uno con immagini e offset'ed all'inizio del grafico e uno con le solite etichette in basso:

xAxis: [{ 
    offset: -290, 
    tickWidth: 0, 
    lineWidth: 0, 
    categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], 
    labels: { 
     x: 5, 
     useHTML: true, 
     formatter: function() { 
      return '<img src="http://highcharts.com/demo/gfx/sun.png"><img>&nbsp;'; 
     } 
    } 
}, { 
    linkedTo: 0, 
    categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] 
}], 

esempio completo su jsfiddle

enter image description here

+1

non conoscevo l'esistente opzione 'useHTML'. mi ha salvato molto – raymondralibi

+0

Il problema con questa soluzione è che non è possibile utilizzare i dati nella 'serie' nel formattatore in cui si imposta l'immagine (almeno non ho trovato un modo per accedervi). –

0

È possibile utilizzare Renderer.image() per aggiungere le immagini in qualsiasi luogo sul grafico

http://api.highcharts.com/highcharts#Renderer.image()

+0

Sì, ecco un esempio di questo: http://stackoverflow.com/questions/8794682/highcharts-adding-clickable-image-to-every-xaxis-gridline/8801203#8801203 – eolsson

1

ho trovato una soluzione per caso a causa di un codice di registrazione ho dimenticato di rimuovere. È possibile accedere ai dati all'interno del metodo di formattazione con "questo":

... 
plotOptions: { 
    series: { 
     dataLabels: { 
      useHTML: true, 
      enabled: true, 
      x: -50, 
      y: -50, 
      formatter: function(){ 
       console.log(this); 
       return '<span>'+this.y+'</span><br/>'+this.series+'<img src="'+this.key+'" />'; 
      }, 
     } 
    ... 

Questo codice di certo non funziona, ma mostra l'idea, non è vero? Spero che aiuti!

Problemi correlati