jqPlot在Y轴上重复值

时间:2012-09-12 12:02:18

标签: jqplot

我有一个图表,Y轴上的值可以变化很大。我唯一的信息是:

  • 所有值均为整数
  • 值为> = 0

现在如果我只有很少的波动率非常低的值(让我们采取极端的)[0,0,0,0,0,0,0]我得到了我的Y轴重复值。它看起来像:

 |
1+
 |
1+
 |
1+
 |
0+
 |
0+
 |
0+-----------------------------------------

我想要实现的是让jqPlot跳过重复值,可能只显示2个刻度--Y轴上的0,1(最底部和非常顶部)。

有什么想法吗?添加我的代码以供参考:

yaxis:{
    label:'Count',
    padMin: 0,
    labelRenderer: $.jqplot.CanvasAxisLabelRenderer,
    tickRenderer: $.jqplot.CanvasAxisTickRenderer,
    tickOptions:{
       formatString:'%d'
    }
}

5 个答案:

答案 0 :(得分:2)

这根本不是错误。 jqplot在其图形中使用某种缩放,因此当您说formatString:'%d'时,您强制在y轴上显示int值。删除此行后,它将回退到1.3, 1.8, ...左右等值。我想你想显示int值的tickInterval(我发现这篇文章在没有回复的情况下寻找同样的问题)。

猜猜这还不能完成

答案 1 :(得分:1)

如果您只需显示整数位数,则可以使用自定义字符串格式化程序:

 tickOptions:{
   formatString:'%d',
   formatter: yourCustomFormater
}

'yourCustomFormatter'增强的地方默认为'$ .jqplot.DefaultTickFormatter':

var yourCustomFormatter = function (format, val) {
    if (typeof val == 'number') {
        if (!format) {
            format = $.jqplot.config.defaultTickFormatString;
        } 

        if (val % 1 === 0) {
            return $.jqplot.sprintf(format, val);
        } else {
            //ignore items with not integer values
            return '';
        }
    }
    else {
        return String(val);
    }
};

但请注意,默认情况下,此格式化程序会影响条形图上的标签,除非您使用任何其他荧光笔插件。

答案 2 :(得分:0)

它是插件的一个错误,我可以在他们的演示代码上重现它,我自己也有同样的问题。

现在将图表设置为较小的维度,因为这是插件的当前缺陷。

希望这会有所帮助。

答案 3 :(得分:0)

你可以用这个

axes:{ xaxis:{ numberTicks: 2 } }

答案 4 :(得分:0)

对我来说,下面修正了这个问题: 1-参数tickOptions是tickOptions:{formatString:“%d”}我把它更改为tickOptions:{formatString:“%。2f”}因为如果两个元素四舍五入到相同的整数值,它的tick会显示两次,

2-我添加了额外的参数numberTicks:4让轴只有4个图

通过这两项更改,当前问题已修复,但可能会根据传递给图表的数据再次出现