4

我有一个图表,其中 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'
    }
}
4

5 回答 5

2

这根本不是错误。jqplot 在他们的图形中使用某种缩放,所以当你说formatString:'%d'你强制在 y 轴上显示 int 值时。删除这条线,它会回落到这样的值1.3, 1.8, ...。我猜你想显示int值的tickInterval(我发现这篇文章寻求同样的问题但没有回应)。

估计这还做不到

于 2012-09-13T14:48:45.547 回答
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);
    }
};

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

于 2014-01-24T14:23:27.590 回答
0

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

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

希望这有帮助。

于 2012-09-12T20:11:46.717 回答
0

你可以用这个

axes:{ xaxis:{ numberTicks: 2 } }

于 2014-12-13T08:50:19.370 回答
0

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

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

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

于 2017-05-02T12:31:25.990 回答