【问题标题】:jQuery Flot skipping x-axis valuesjQuery Flot 跳过 x 轴值
【发布时间】:2013-08-19 12:16:10
【问题描述】:

我阅读了 Flot 的大部分文档,但没有真正找到任何相关内容。

目前我的流动图如下所示:

并且由于中间行没有数据,我希望能够隐藏它,但仍然显示来自第一个和最后 2 个 x 轴列的数据。

我定义x轴值的方式如下:

var options = [{[1, '1-1-2013'], [2, '1-4-2013'], [3, '1-7-2013'], 
[4, '1-10-2013'], [5, '1-1-2014']}];

这很好用,因为我根据每个元素的第一个数字绘制数据值,这是某种日期 ID。

为了更好地解释它,我希望我的图表看起来像这样:

【问题讨论】:

  • 所以如果相应数据为零,您不想绘制刻度?
  • 没错。在我的 x 轴的第三个刻度上,没有数据。我想隐藏那个勾号。

标签: javascript jquery graph flot


【解决方案1】:

您可以手动更改数据系列以省略所有空值,但您还必须手动指定刻度(和标签)。

例如,如果您的数据类似于

data = [
    ['1-1-2013', 2.5],
    ['1-2-2013', 2.0],
    ['1-3-2013', 0.0],
    ['1-4-2013', 2.2]
];

然后您的数据将更改为

data = [
    [0, 2.5],
    [1, 2.0],
    [2, 2.2]
];

你的 x 轴刻度是

ticks = [
    [0, '1-1-2013'],
    [1, '1-2-2013'],
    [2, '1-4-2013']
];

可能的代码:

var newdata = [];
var newticks = [];

function changeData(data) {
    $.each(data, function(index, element) {
        if (element[1] != 0.0) {
            newdata.push([ newdata.length, element[1] ]);
            newticks.push([ newticks.length, element[0] ]);
        }
    });
}

【讨论】:

  • 很好的建议,但我的问题是我正在使用(如您在 jsfiddle 中看到的)每个 x 轴刻度超过 1 个值的数据集,并且所有这些都是以编程方式添加的,这使得之后的更改变得更加复杂。
  • 更复杂但并非不可能。如果您的数据很复杂,则没有简单的解决方案。也许在将数据发送到客户端之前在服务器端进行计算?
【解决方案2】:

您可以使用tick for-matter函数如果值为零则返回null,否则在指定tick数组时,将空字符串传递给相应的值。

var ticks = [
          [1, '1-1-2013'], 
          [2, '1-4-2013'],
          [3, ''], 
          [4, '1-10-2013'], 
          [5, '1-1-2014']
];

或者

xaxis: {
     tickFormatter: function(v, axis) {
        if(v != 0) {
            return "<span class='axisLabel'>" + v + "%</span>";
        } else {
            return "";
        }
}

【讨论】:

  • 那不是仍然保留勾号,只是没有勾号上的描述吗?此外,当我尝试在我的示例中使用您的代码时,由于某种原因,它根本没有任何改变。
  • @LarsJensen Fiddle 好吗?请参考Flot: Displaying specific tick labels。它应该可以工作
  • jsfiddle.net/3Fc3J - 我不知道如何将外部浮点库添加到 JSFiddle,但这通常是我目前正在使用的代码。
  • 我将问题更改为对我希望图表的外观进行图形表示,它可能会让您更清楚地了解我想要什么。
  • 我现在明白了你的问题。实际上,flot 无法做到这一点。你不能跳过刻度并在原地打印。已经有一个悬而未决的问题了。Flot:Hide specific tick labels and print next label in place。你所能做的就是打印一个空标签。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-03
相关资源
最近更新 更多