jqPlot在Y轴上重复数值

4

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

  • 所有的值都是整数
  • 这些值都大于等于0

现在,如果我只有少量的值,它们的波动非常小,例如(让我们取极端值)[0,0,0,0,0,0,0],那么我在Y轴上就会得到一些重复的值。它看起来像:

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

我希望实现的是让jqPlot跳过重复的值,可能只显示Y轴上的2个刻度 - 0和1(即最底部和最顶部的值)。
有什么想法吗?以下是我的参考代码:
yaxis:{
    label:'Count',
    padMin: 0,
    labelRenderer: $.jqplot.CanvasAxisLabelRenderer,
    tickRenderer: $.jqplot.CanvasAxisTickRenderer,
    tickOptions:{
       formatString:'%d'
    }
}
5个回答

2
这并不是一个bug。jqplot在其图形中使用某种缩放功能,因此当你设置 formatString:'%d' 时,你强制在y轴上显示整数值。删除此行将回退到像 1.3, 1.8, ... 这样的值。我猜你想要显示整数值的刻度间隔(我在寻找同样的问题时找到了这篇文章但没有得到答案)。
我猜现在还无法实现这个功能。

sorta是,我的意思是它应该尝试更好地处理这个缺点,而不是重复相同的数字。 - Eman

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);
    }
};

但是请注意,除非您使用其他高亮插件,否则此格式化程序默认会影响您的条形标签。


0
你可以使用这个

axes:{ xaxis:{ numberTicks: 2 } }


1
请在您的答案中添加更多细节,使其对读者更有用。 - Mohit Jain

0
对于我来说,以下方法解决了问题: 1- 参数tickOptions原本是tickOptions:{formatString:“%d”},我将其更改为tickOptions:{formatString:“%.2f”},因为如果两个元素四舍五入后相同,则其刻度会显示两次。
2- 我添加了额外的参数numberTicks:4,让轴只有4个标记
通过这两个更改,当前的问题已经解决,但根据传递给图表的数据,它可能会再次出现。

0

这是插件的一个bug,我可以在他们的演示代码上重现它,而且我自己也遇到了同样的问题。

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

希望这有所帮助。


好的,我会看看是否能通过某种方式发现错误...谢谢 - Jan Zyka
@Jan Zyka,我也遇到了同样的问题。你是否已经提交了错误报告?如果是,请在这里提供链接。 - Sam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接