2012-06-13 116 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