无法使用 jQuery Flot orderBars 和 errorBars 对齐条形图
Unable to align bars using jQuery Flot orderBars with errorBars
我正在尝试制作一个多系列条形图(使用 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
插件不能真正协同工作。您可以让它们工作,但只有当误差线用于中间的条时才容易:
为此,我必须对您的代码进行一些更改(参见 fiddle):
- 为所有三个条设置相同的对齐方式(使用 orderBars 时,您可以完全不指定对齐方式)
- 从第二个数据系列中的每个数据点中删除第三个值,因为这被解释为条的偏移量(跳跃)(也删除此处的误差条)
- 为错误添加一个新的数据数据系列(这里每个数据点必须有三个值)禁用条形图(此 "hack" 也用于 Flot 页面上的 example )
更新代码(替换原来的第二个数据系列):
}, {
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
}
},
PS:如果你想让它与所有条的错误条一起使用,那么你必须自己计算条的 x 偏移量并相应地更改错误数据系列的 x 值.
我正在尝试制作一个多系列条形图(使用 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
插件不能真正协同工作。您可以让它们工作,但只有当误差线用于中间的条时才容易:
为此,我必须对您的代码进行一些更改(参见 fiddle):
- 为所有三个条设置相同的对齐方式(使用 orderBars 时,您可以完全不指定对齐方式)
- 从第二个数据系列中的每个数据点中删除第三个值,因为这被解释为条的偏移量(跳跃)(也删除此处的误差条)
- 为错误添加一个新的数据数据系列(这里每个数据点必须有三个值)禁用条形图(此 "hack" 也用于 Flot 页面上的 example )
更新代码(替换原来的第二个数据系列):
}, {
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
}
},
PS:如果你想让它与所有条的错误条一起使用,那么你必须自己计算条的 x 偏移量并相应地更改错误数据系列的 x 值.