gpt4 book ai didi

jquery - Stacked Bar Flot 条形图通过工具提示显示每个系列中每个类别的值

转载 作者:行者123 更新时间:2023-12-01 08:38:01 25 4
gpt4 key购买 nike

使用下面的这个实现:

$.fn.UseStackBarTooltip = function (module) {
$(this).bind("plothover", function (event, pos, item) {
if (item) {
if ((previousLabel != item.series.label) || (previousPoint != item.dataIndex)) {
previousPoint = item.dataIndex;
previousLabel = item.series.label;
$("#tooltip").remove();

var x = item.datapoint[0];
var y = item.datapoint[1] - item.datapoint[2];
var formated = y.toLocaleString();

var color = item.series.color;

showStackTooltip(item.pageX,
item.pageY,
color,
"<strong>" + item.series.label + "</strong><br><strong>" + formated + "</strong>", module);
}
} else {
$("#tooltip").remove();
previousPoint = null;
}
});};

Current Implementation

当我将鼠标悬停在所选栏上时,我可以显示所选类别的值,我想做的是仅在一次悬停中显示所选栏上每个类别的所有值。是否有可能做到这一点?谢谢!

最佳答案

当您处于悬停事件并将鼠标悬停在某个项目上时,您必须循环遍历 x 轴索引上的数据值才能获取其余的堆叠值:

$("#graph").bind("plothover", function(event, pos, item) {

// if we're hovering over an item
if (item) {
// get the data in the plot
var plotData = plot.getData();
var valueString = "";

// loop through the data and grab each value in the same stack
for (var i = 0; i < plotData.length; ++i) {
var series = plotData[i];
for (var j = 0; j < series.data.length; ++j) {
// item.datapoint[0] contains the x axis value of the hovered over item
// ensure we get the other values at the same x axis value.
if (series.data[j][0] === item.datapoint[0]) {
valueString += series.data[j][1] + " ";
}
}
}

// show the tool tip here - the valueString object has all the values in the stack

}
});

下面的示例显示了工具提示中堆栈的值 - 您需要根据需要设置字符串格式。

$(function() {
var data = [{
data: [
[0, 21.51],
[1, 32.50],
[2, 47.14],
[3, 10]
],
stack: 0,
label: 'Bottom'
}, {
data: [
[0, 37.77],
[1, 24.65],
[2, 7.67],
[4, 15]
],
stack: 0,
label: 'Top'
}];

var options = {
series: {
bars: {
show: true,
barWidth: .5,
align: "center"
},
points: {
show: false
}
},
grid: {
show: true,
hoverable: true,
}
};

var plot = $.plot($('#graph'), data, options);

$("#graph").bind("plothover", function(event, pos, item) {

$("#tooltip").remove();

if (item) {
var plotData = plot.getData();
var valueString = "";

for (var i = 0; i < plotData.length; ++i) {
var series = plotData[i];
for (var j = 0; j < series.data.length; ++j) {
if (series.data[j][0] === item.datapoint[0]) {
valueString += series.data[j][1] + " ";
}
}
}

$("<div id='tooltip'>" + valueString + "</div>").css({
position: "absolute",
display: "none",
top: pos.pageY + 5,
left: pos.pageX + 5,
border: "1px solid #fdd",
padding: "2px",
"background-color": "#fee",
opacity: 0.80
}).appendTo("body").fadeIn(200);

}
});
});
#graph {
width: 600px;
height: 400px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.js"></script>
<script src="https://rawgit.com/flot/flot/master/jquery.flot.stack.js"></script>
<div id="graph"></div>

关于jquery - Stacked Bar Flot 条形图通过工具提示显示每个系列中每个类别的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51306111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com