2013-06-07 11 views
10

Per this.x, Ricevo la posizione dell'indice quando inserisco i dati tramite codice. Se compilo i dati separatamente, come il seguente codice, allora this.x restituisce l'elemento giusto. Come posso risolvere questo problema?Formattazione del suggerimento per Highcharts

Opere

xAxis: { 
    categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] 
}, 

series: [{ 
    data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]   
}] 

posizione indice è sempre spinto fuori per this.x qui

var points = [{ 
    Name: 'good', 
    Y: '15000' 
}, { 
    Name: 'baad', 
    Y: '3000' 
}, { 
    Name: 'wow', 
    Y: '2000' 
}]; 

var chartData = { 
    GetChartSeries: function (points, name) { 

     var seriesData = []; 
     if (points != null && points != 'undefined') { 
      for (i=0; i<points.length; i++) { 
       seriesData.push({ 
        name: ""+points[i].Name, 
        y: parseFloat(points[i].Y) 
        //,color: '' 
       }); 
      } 
     } 
     return seriesData; 
    } 
}; 


$(function() { 
    $('#container').highcharts({ 
     chart: { 
      type: 'column', 
      margin: [ 50, 50, 100, 80], 
      borderColor: '#A4A4A4', 
      borderRadius: 5, 
      borderWidth: 2 
     }, 
     legend: { 
      enabled: false 
     }, 
     title: { 
      text: 'Graduation Year Breakdown' 
     }, 
     colors: ['#790000'], 
     legend: { 
      enabled: false 
     }, 
     plotOptions: { 
      series: { 
       /* 
       dataLabels: { 
        enabled: true, 
        color: 'red' 
       }, 
       */ 
       borderRadius: 3, 
       colorByPoint: true 
      } 
     }, 
     tooltip: { 
      formatter: function() { 
       return '<b>'+ Highcharts.numberFormat(this.y, 0) +'</b><br/>'+ 
        'in year: '+ this.x; 
      } 
     }, 
     xAxis: { 
      categories: [], 
      labels: { 
       rotation: -45, 
       align: 'right', 
       style: { 
        fontSize: '13px', 
        fontFamily: 'Verdana, sans-serif' 
       } 
      } 
     }, 
     yAxis: { 
      min: 0, 
      title: { 
       text: 'Number of Students' 
      } 
     }, 
     series: [{ 
      //name: 'Population', 
      data: chartData.GetChartSeries(points, ""),//[4000, 3400, 2000, 34000, 120000],     
      dataLabels: { 
       enabled: true, 
       //rotation: -90, 
       color: '#4F4F4F', 
       align: 'center',//'right', 
       //x: 4, 
       //y: 10, 
       style: { 
        fontSize: '12px', 
        //fontWeight: 'bold', 
        fontFamily: 'Verdana, sans-serif' 
       } 
      } 

     }] 
    }); 
}); 
+0

Non del tutto sicuro di quello che viene chiesto qui. Potresti inserire questo in un JSFiddle o qualcosa che mostri ciò che è/non funzioni, o spiegare che cosa stai aspettando? – NT3RP

+0

Questo mio codice, si prega di posizionare il puntatore del mouse su barre marrone per visualizzare il suggerimento. Vedrai 15000 nell'anno "0": http://jsfiddle.net/tahirjadoon/cPT45/ Questo è un violino ufficiale con grafici alti, il mouse sulle barre blu e vedrai il giusto suggerimento: http: // jsfiddle.net/gh/get/jquery/1.9.1/highslide-software/highcharts.com/tree/master/samples/highcharts/demo/column-rotated-labels/ Ora, se cambio il mio codice per grafici alti poi vedo la punta dell'utensile giusto. Se cambio il codice degli high chart con il mio, hanno lo stesso problema. Il modo in cui compilo i dati, la descrizione dell'utensile mi dà la posizione dell'indice anziché "l'anno". –

risposta

31

Mentre sono incerti sul motivo per cui la soluzione non funziona, posso propongo un soluzione alternativa.

La funzione tooltip formatter ha accesso a numerosi parametri diversi. Invece di this.x, è possibile utilizzare this.point.name.

Ad esempio:

formatter: function() { 
    // If you want to see what is available in the formatter, you can 
    // examine the `this` variable. 
    //  console.log(this); 

    return '<b>'+ Highcharts.numberFormat(this.y, 0) +'</b><br/>'+ 
     'in year: '+ this.point.name; 
} 
+0

Grazie! Qualcuno mi è mancato. –

+7

+1 per console.log (questo), non lo sapevo! – PeerBr