2012-06-13 111 views
2

我發現下面的線索非常有用格式Y軸蜱jqplot /值

http://groups.google.com/group/jqplot-users/browse_thread/thread/1986 ...

我想獲得的所有y軸值或數組中的蜱...我 意圖是計算每個滴答的數字位數並且 找到最頻繁的位數。 基於那個IM計劃截斷y軸 刻度/值的數字位數。 例如:如果大多數滴答具有6位數字,則截斷爲3位數字 並將單詞(千位)附加到軸標籤。

我該如何做到這一點?在下面的函數中,我可以得到一個 一個......但我需要提前獲取它們,以便我可以通過 決定什麼因素來截斷該數字。請忽略帶有Commas.Its的函數數字只是一個示例。

(function($) { 
    $.jqplot.tickNumberFormatter = function (format, val) { 
     if (typeof val == 'number') { 
      if (!format) { 
       format = '%.1f'; 
      } 
      return numberWithCommas($.jqplot.sprintf(format, val)); 
     } 
     else { 
      return String(val); 
     } 
    }; 

    function numberWithCommas(x) { 
     return x.toString().replace(/\B(?=(?:\d{3})+(?!\d))/g, ","); 
    } 

@Boro:非常感謝您的回覆。你能不能讓我知道這條線是幹什麼的?

var ticks = $('.jqplot-' + axisName + '-tick'); 

相同的行在我的代碼中不起作用。我如何使用它?

在控件進入格式化程序之前,我可以使用它將所有刻度推入數組中嗎?換句話說,我可以在控制進入下列功能之前獲得所有的滴答聲嗎?

$.jqplot.tickNumberFormatter = function (format, val) { 

以下代碼在您的示例中出色地工作。爲什麼它不煤礦:(

   var axisName = 'yaxis'; 
       var count = 0; 
       var ticks = $('.jqplot-' + axisName + '-tick'); 
       for (count = 0; count <= ticks.length; count++) 
        { 

       console.log($(ticks[count]).text()); 
        } 

回答

3

工作,起初我還以爲這將是從情節本身using a similar approach as here.取值。這樣容易,我創建a sample which on click on any bar loops around the selected axis ticks.這一個問題是,我們正在使用「私人」變量_ticksticks一個是一個空數組(因爲它必須顯式設置)。這種方法是行不通的,例如,用在這裏我們設置的ticks變量x軸。

因此,讓所有的蜱,無論你是否設置它們,我都會使用jQuery並在需要時抓住它們,as presented in this code。儘管如此,如果格式化程序在繪圖完成之前就行動起來,HTML元素可能還沒有抓住它們,但您可以自己測試它。如果這種方法不起作用,您可以根據所設置的滴答或不滴定,始終使第一種方法採取不同的行爲。

可否請你讓我知道這行做究竟是什麼:

響應OP的編輯編輯?

這裏我使用jQuery來捕獲由其名稱(axisName)指定的軸的滴答。在我使用它之前,我指定了var axisName = 'yaxis';變量。你可以用它來代替它:var ticks = $('.jqplot-yaxis-tick');

因爲它涉及到你的其餘問題可能是這樣的情況,我提到了我的第一個答案,即。

EDIT2:

Check out this sample.它抓住蜱格式化裏面,你可以觀察到有有時他們是零可能是因爲在創建蜱HTML元素之前格式化被調用。因此,只要在有一些滴答時應用你的算法,否則應用默認格式,看看這種方法是否可行。

它仍然可能不起作用,因爲我們不知道發生了什麼,例如,爲什麼在控制檯中我們有變量等於20,表示格式化程序被調用的次數,而ticks.size() !== 0。爲什麼變量不等於21或者可以被7整除的其他數字(即滴答數)?

+0

你可以請看看編輯和幫助我 – user930514

+0

@ user930514請在http://jsfiddle.net分享你的所有代碼也許你錯過了什麼? – Boro

+0

請查看** EDIT2 **,其中顯示瞭如何抓取格式化程序中的刻度。 – Boro