2013-04-09 26 views
8

Highcharts 3.0, bir pasta grafiğinde araç ipuçlarını görüntülerken kayan nokta sayısı doğruluğu sorunu var gibi görünüyor. Ben highcharts demo pasta grafik - Pie with Legend birini kullanarak kesin hatayı yeniden oluşturmak başardı. Javascript'i düzenlemek için "JsFiddle'ta Düzenle" ye tıklayın.Highcharts Pasta Grafiği yüzdeyi yok sayarDecimals araç ipucu ayarı ve kayan nokta hatası sorunu var

Javascript panelinin içinde seri ve veri bölümüne bakın. Firefox ve IE verilerini saklayın ve diğer verileri atın, böylece sadece 2 dilim pastaya odaklanabiliriz. İki veri çenesinin 100'e kadar bir yüzdesi yoktur, bu nedenle yüksek şemalar bizim için yüzdeleri yeniden hesaplar. Üstteki Çalıştır düğmesini tıklayın, dilimlerin üzerinde fare, yüzdeler maksimum ondalık sayısıyla çok doğru. Ama bekleyin, javascript tooltip seçeneğine bakın, highcharts açıkça "percentDecimals: 1" ayarını göz ardı ediyor. Bu sorun # 1. Şimdi

şöyle en elle veri yüzdeleri düzenleyelim: [ 'Firefox'u, 57,7], [ 'IE', 42.3] yüzden tam olarak 100,0 kadar eklerim. Tekrar Çalıştır düğmesine basın, dilim araç ipuçları 'Firefox: 57.0000000000001%' ve 'IE:% 42.3' görüntüler. Yüzdeler 100'e kadar çıkarsa ya da olmasın, bu yüzden küçük bir kayan nokta yanlışlığı ortaya çıkarsa, yeniden hesaplama yapılır. Bu 2 numaralı meseledir. Bu durumda "percentDecimals" yuvarlama çalışmış olsaydı, bu konu gizlenmiş olabilirdi.

Bilmek istiyorum: * Aynı sorunu gören ve bir çeşit iş sahibi olan başka biri var mı? * Yüksek şemalar bu sorunlara yanıt verebilir ve bilinen hatalar olup olmadığını bize bildirebilir mi? Billy Reverb en Yorum dayalı bu soruyu cevaplamak

+0

Neden 'percentDecimals' olduğunu bilmiyorum ama tabi ki Highcharts'da böyle bir seçenek yok. Hata ile ilgili olarak, JS'yi deneyin, 0,1 + 0,2'yi hesaplayın ve etkileri izleyin. Ne tavsiye edebilirim pointFormat kaldırmak ve sadece tooltip.formatter kullanmaktır. –

+1

Teşekkürler Pawel. tooltip.formatter = function() { return this.point.name + ': ' + Highcharts.numberFormat (this.percentage, 1) + '%'; } –

+1

Ayrıca "this.percentage.toFixed (1)' :) –

cevap

16

:

Sadece bu yerini attributes: Bunun

tooltip: { 
    pointFormat: '{series.name}: <b>{point.percentage}%</b>', 
    percentageDecimals: 1 
} 

:

tooltip: { 
    formatter: function() { 
        return this.point.name + ': <b>' + Highcharts.numberFormat(this.percentage, 1) + '%</b>'; 
       } 
} 
14

Daha basit bir çözüm kullanmaktır

{point.percentage:.1f}% 
tooltip: { 
    formatter: function() { 
        return this.point.name + ': <b>' + Highcharts.numberFormat(this.percentage, 1) + '%</b>'; 
       } 
} 

ama bunu:Benim için pointFormat dize

+1

için de kullanabilirsiniz, ancak benim için çalıştı, ama .1f ne anlama geliyor? – Naeem

+0

Genious, tam da aradığım şey! .1f, 1 kayan yer anlamına gelir. f, yüzer. – craig1231

2

yılında upvoted çözüm işe yaramadı

this.percentage.toFixed(1) 
1

Eğer kafa masa-başı masası gitmeden önce, çalışırken yüzdesini biçimlendirmek için. kullanmadığınız zamanlarda

  1. (Math.round(this.point.percentage*100)/100) + ' %'
  2. Highcharts.numberFormat(this.percentage, 1) + '%'
  3. this.percentage.toFixed(1)
  4. {point.percentage}% or {point.percentage:.1f}%

Sık sık araç ipuçları ve etiket ve içerisinde 4. kullanın: Burada

bunu yapmak için bazı yollar özel biçimlendirici işlevi.

İlgili konular