2013-06-07 11 views
10

Dla this.x uzyskuję położenie indeksu po wprowadzeniu danych za pośrednictwem kodu. Jeśli zapełniam dane osobno, np. Poniższy kod, to this.x zwraca właściwy element. Jak mogę rozwiązać ten problem?Narzędzie do formatowania podpowiedzi Highcharts

Works

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]   
}] 

położenie indeksu jest uzyskiwanie wypchnięty na this.x tutaj

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

Nie do końca pewien, co jest proszony jest tutaj. Czy możesz umieścić to w JSFiddle lub coś, co pokazuje, co jest/nie działa, lub wyjaśnić, czego się spodziewasz? – NT3RP

+0

To mój kod, proszę unosić się nad bordowymi kratami, aby zobaczyć wskazówkę narzędzia. Zobaczysz 15000 w roku "0": http://jsfiddle.net/tahirjadoon/cPT45/ To jest oficjalne skrzypce z wysokimi wykresami, mysz nad niebieskimi paskami, a zobaczysz odpowiednią wskazówkę: http: // jsfiddle.net/gh/get/jquery/1.9.1/highslide-software/highcharts.com/tree/master/samples/highcharts/demo/column-rotated-labels/ Teraz, jeśli zmienię kod na wysokie wykresy wtedy widzę właściwą końcówkę narzędzia. Jeśli zmienię wysoki kod wykresów z moim, to też mają ten sam problem. Sposób zapełniania danych, wskazówka narzędzia daje mi lokalizację wskaźnika zamiast "roku". –

Odpowiedz

31

Choć jestem pewny, dlaczego rozwiązanie nie działa, mogę zaproponować alternatywne rozwiązanie.

Funkcja tooltip formatter ma dostęp do wielu różnych parametrów. Zamiast this.x, możesz użyć this.point.name.

Na przykład:

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

Dzięki! Ja jakoś tęskniłem za tym. –

+7

+1 dla console.log (this), nie wiedziałem o tym! – PeerBr

Powiązane problemy