簡體   English   中英

Stacked Bar Flot條形圖通過工具提示顯示每個系列中每個類別的值

[英]Stacked Bar Flot bar chart show values of every category in each series with tooltip

在下面使用此實現:

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

當前實施

當我將鼠標懸停在所選欄上時,我可以顯示所選類別的值,我想做的是我只想在單個懸停中顯示所選欄上每個類別的所有值。 是否有可能做到這一點? 謝謝!

當您處於懸停事件並懸停在某個項目上時,您將必須遍歷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> 

 $("#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 = plotData[item.seriesIndex].data[item.dataIndex][1]; // show the tool tip here - the valueString object has all the values in the stack } }); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM