我发现以下主题非常有用
http://groups.google.com/group/jqplot-users/browse_thread/thread/1986 ...
我想得到数组中的所有y轴值或刻度...我的 意图是计算每个刻度中的位数 找到最常见的位数。 基于我计划截断y轴的位数 蜱/值。 例如:如果大多数刻度线有6位数,则截断为3位数 并将单词(以千计为单位)附加到轴标签上。
我怎样才能做到这一点?在下面的函数中,我可以得到一个滴答 一个...但我需要提前得到它们,以便我可以决定 截断数字的因素是什么。请忽略函数numberwithCommas.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());
}
答案 0 :(得分:3)
起初我认为它就像从图表中获取值一样容易using a similar approach as here.因此,我创建了a sample which on click on any bar loops around the selected axis ticks.这个问题的一个问题是我们正在使用'private'变量{{ 1}}因为_ticks
是一个空数组(因为它必须显式设置)。例如,使用xaxis设置ticks
变量时,此方法不起作用。
因此,为了获得所有标记,不管是否由您设置,我会使用ticks
并在您需要时抓住它们as presented in this code。虽然,考虑到这一点,如果格式化程序在绘图完成之前起作用,HTML元素可能还没有抓住它们,但您可以自己测试它。如果这种方法不起作用,您可以始终根据设置的刻度调整第一种方法以采取不同的行动。
编辑以响应OP的编辑:
能告诉我这一行的确切内容吗?
在这里,我使用jQuery
来捕获由其名称(jQuery
)指定的轴的刻度。为此之前我使用它,我指定axisName
变量。您可以将其替换为:var axisName = 'yaxis';
在谈到其他问题时,我可能会在第一个答案结束时提及,即var ticks = $('.jqplot-yaxis-tick');
。
<强> EDIT2:强>
Check out this sample.它抓住格式化程序中的刻度,因为你可以观察到它们有时它们为零,可能是因为格式化程序是在创建刻度HTML元素之前调用的。因此,只有在有一些滴答时应用您的算法,否则应用默认格式,看看这种方法是否有效。
它仍然可能无法工作,因为我们不知道发生了什么,例如,为什么在控制台中我们if the formatter acts before the plot is finished the HTML elements might not be there yet to grab them
变量等于20表示格式化程序被调用的次数{{1} }。为什么变量不等于21或其他可被7整除的数字(即滴答数)?