Javascript 无法使用jQuery Flot orderBars与errorBars对齐栏

Javascript 无法使用jQuery Flot orderBars与errorBars对齐栏,javascript,jquery,flot,Javascript,Jquery,Flot,我正在尝试创建一个多系列条形图(使用orderBars),其中中间系列需要显示变量采样的errorBars。我似乎无法使这些条线在网格中正确对齐,也不知道如何使其工作。现在,在我完成的地方,左栏和右栏正确对齐,但中间栏跳起来,没有正确对齐 这是我当前的编码: $(function() { var figure0 = [{ label: "Cost 1", data: [[1,5229.7], [2,4496.8], [3,4307.0], [4,420

我正在尝试创建一个多系列条形图(使用orderBars),其中中间系列需要显示变量采样的errorBars。我似乎无法使这些条线在网格中正确对齐,也不知道如何使其工作。现在,在我完成的地方,左栏和右栏正确对齐,但中间栏跳起来,没有正确对齐

这是我当前的编码:

$(function() {
    var figure0 = [{
        label: "Cost 1", 
        data: [[1,5229.7], [2,4496.8], [3,4307.0], [4,4205.6], [5,3809.7]],
        bars: {
            order: 0
        }
    }, {
        label: "Cost 2", 
        data: [[1,4973.5,500], [2,3380.4,100], [3,3105.7,100], [4,3000.8,100], [5,2939.0,100]],
        points: {
            radius: 0,
            errorbars: "y", 
            yerr: {
                show: true,
                upperCap: "-",
                lowerCap: "-",
                radius: 5,
                color: "black"
            }
        },
        bars: {
            align: "center",
            order: 1
        }
    }, {
        label: "Cost 3", 
        data: [[1,1045.2], [2,881.8], [3,809.0], [4,850.8], [5,771.5]],
        bars: {
            order: 2
        }
    }];

    var formatFigure0 = {
        series: {
            stack: false,
            bars: {
                show: true,
                fill: true,
                barWidth: 0.2,
                lineWidth: 1,
                fillColor: { colors: [{ opacity: 1 }, { opacity: 1 }] }
            }
        },
        xaxis: {
            show: true,
            ticks: [1, 2, 3, 4, 5],
            tickDecimals: 0,
            tickSize: 1,
            axisLabel: "Quintiles"
        },
        yaxis: {
            show: true,
            tickDecimals: 0,
            tickSize: 1000,
            axisLabel: "Dollars (millions)"
        },
        legend: {
            show: true,
            position: "ne",
            margin: 10,
        },
        grid: {
            hoverable: false
        }
    };

    $.plot($("#figure0DIV"), figure0, formatFigure0);
});

errorbars
orderBars
插件不能真正协同工作。您可以让它们工作,但只有当errorbars用于中间的bars时,才可以轻松地工作:

为了实现这一点,我必须对您的代码进行一些更改(请参见此):

  • 为所有三个栏指定相同的对齐方式(使用orderBars时,您可以不指定任何对齐方式)
  • 删除第二个数据系列中每个数据点的第三个值,因为这被解释为条的偏移(跳跃)(此处也删除错误条)
  • 为错误添加一个新的数据系列(在这里,每个数据点必须有三个值),并禁用条(此“hack”也用于Flot页面上的)
更新的代码(替换原始的第二个数据系列):


PS:如果你想让所有条的errorbars都能使用它,那么你必须自己计算条的x偏移量,并相应地更改错误数据系列上的x值。

errorbars和
orderBars
插件实际上不能一起工作。您可以让它们工作,但只有当errorbars用于中间的bars时,才可以轻松地工作:

为了实现这一点,我必须对您的代码进行一些更改(请参见此):

  • 为所有三个栏指定相同的对齐方式(使用orderBars时,您可以不指定任何对齐方式)
  • 删除第二个数据系列中每个数据点的第三个值,因为这被解释为条的偏移(跳跃)(此处也删除错误条)
  • 为错误添加一个新的数据系列(在这里,每个数据点必须有三个值),并禁用条(此“hack”也用于Flot页面上的)
更新的代码(替换原始的第二个数据系列):


PS:如果你想让它在所有条的错误条上工作,那么你必须自己计算条的x偏移量,并相应地更改错误数据系列上的x值。

你能建立一个吗?我试图建立一个,但无法实现。如果我最后还有其他问题,我会更深入地研究。谢谢你能造一个吗?我试着造一个,但没能成功。如果我最后还有其他问题,我会更深入地研究。谢谢
}, {
  label: "Cost 2",
  data: [
    [1, 4973.5], [2, 3380.4], [3, 3105.7], [4, 3000.8], [5, 2939.0]
  ],
  bars: {
    order: 1
  }
}, {
  data: [
    [1, 4973.5, 500], [2, 3380.4, 100], [3, 3105.7, 100], [4, 3000.8, 100], [5, 2939.0, 100]
  ],
  points: {
    radius: 0,
    errorbars: "y",
    yerr: {
      show: true,
      upperCap: "-",
      lowerCap: "-",
      radius: 5,
      color: "black"
    }
  },
  bars: {
    show: false
  },
  lines: {
    show: false
  }
},