首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在flot图表文本数据中将x轴值设置为工具提示

如何在flot图表文本数据中将x轴值设置为工具提示
EN

Stack Overflow用户
提问于 2013-08-12 09:49:19
回答 2查看 14.4K关注 0票数 1

我尝试用下面的代码在Flot char中绘制一个图表。图表按预期绘制,但没有工具提示。

代码语言:javascript
复制
$(function() {

  var data = [
    ["Aug 06", 2],
    ["Aug 07", 1],
    ["Aug 08", 1.5],
    ["Aug 09", 0],
    ["Aug 10", 0],
    ["Aug 11", 0],
    ["Aug 12", 0]
  ];
  var options = {

    series: {
      lines: {
        show: true,
        lineWidth: 1,
        fill: true,
        fillColor: {
          colors: [{
            opacity: 0.5
          }, {
            opacity: 0.2
          }]
        }
      },
      points: {
        show: true,
        lineWidth: 2
      },
      shadowSize: 0
    },
    grid: {
      hoverable: true,
      clickable: true,
      tickColor: "#eeeeee",
      borderWidth: 0,
      hoverable: true,
      clickable: true
    },
    tooltip: true,
    tooltipOpts: {
      content: "Your sales for <b>%x</b> was <span>$%y</span>",
      defaultTheme: false
    },
    xaxis: {
      mode: "categories",
      tickLength: 0
    },
    yaxis: {
      min: 0
    },
    selection: {
      mode: "x"
    }
  };
  $.plot("#section-chart", [data], options);

  // Add the Flot version string to the footer

  $("#footer").prepend("Flot " + $.plot.version + " &ndash; ");
});
代码语言:javascript
复制
#section-chart {
  width: 600px;
  height: 300px;
}
代码语言:javascript
复制
<link href="http://www.flotcharts.org/flot/examples/examples.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.min.js"></script>


<script src="https://cdnjs.cloudflare.com/ajax/libs/flot.tooltip/0.9.0/jquery.flot.tooltip.min.js" integrity="sha512-oQJB9y5mlxC4Qp62hdJi/J1NzqiGlpprSfkxVNeosn23mVn5JA4Yn+6f26wWOWCDbV9CxgJzFfVv9DNLPmhxQg==" crossorigin="anonymous"></script>


<div id="section-chart" class="demo-placeholder"></div>

当将值悬停时,工具提示显示“您对%x的销售是$2”,而应该在这里显示Your sales for Aug 06 was $2,如何将x轴值作为工具提示传递到flot图表中?我在这件事上做错了什么。好心的建议?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-12 14:45:24

解决问题的最简单方法是用回调替换content字符串:

代码语言:javascript
复制
tooltipOpts : {
        content : getTooltip,
        defaultTheme : false
      },

我定义了getTooltip以获得所需的输出:

代码语言:javascript
复制
function getTooltip(label, x, y) {
    return "Your sales for " + x + " was $" + y; 
}

正如你在更新的jsFiddle中看到的那样,它是有效的,但是你可能想在评论中考虑船长的建议,看看你的情况下什么是最好的。

票数 5
EN

Stack Overflow用户

发布于 2017-11-23 12:46:35

解决方案是使用带有回调函数的tooltipOpts -> content方法将动态数据正确地返回到标签。

我发现,将第四个参数传递给"tooltipOpts“的回调函数,实际上给出了构建图表/图的整个数据对象。在这里,您可以很容易地提取X轴标签,使用这个函数的第二个参数作为要提取的标签的索引。

例子:

我要传递给绘图函数的数据对象:

代码语言:javascript
复制
[
    {
        data: [[1,47478],[2,24500],[3,40177],[4,10512],[5,10512],[6,10512],[7,43439]],
        points: { show: true, radius: 3},
        splines: { show: true, tension: 0.45, lineWidth: 0, fill: 0.4}
    }
],
{
    colors: ['#0cc2aa'],
    series: { shadowSize: 3 },
    xaxis: {
        show: true,
        font: { color: '#ccc' },
        position: 'bottom',
        ticks: [[1,'Thursday'],[2,'Friday'],[3,'Saturday'],[4,'Sunday'],[5,'Monday'],[6,'Tuesday'],[7,'Wednesday']],
    },
    yaxis:{ show: true, font: { color: '#ccc' }, min:1},
    grid: { hoverable: true, clickable: true, borderWidth: 0, color: 'rgba(120,120,120,0.5)' },
    tooltip: true,
    tooltipOpts: {
        content: function(data, x, y, dataObject) {
            var XdataIndex = dataObject.dataIndex;
            var XdataLabel = dataObject.series.xaxis.ticks[XdataIndex].label;
            return y + ' impressions for all of your posts on ' + XdataLabel;
        },
        defaultTheme: false,
        shifts: { x: 0, y: -40 }
    }
}

从上述数据对象呈现的图表:

正如您在图像预览中所看到的,用于动态呈现标签内容的实际数据的逻辑如下:

代码语言:javascript
复制
tooltipOpts: {
    content: function(data, x, y, dataObject) {
        var XdataIndex = dataObject.dataIndex;
        var XdataLabel = dataObject.series.xaxis.ticks[XdataIndex].label;
        return y + ' impressions for all of your posts on ' + XdataLabel;
    },
    defaultTheme: false,
    shifts: { x: 0, y: -40 }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18184013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档