Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在flot图表文本数据中将x轴值设置为工具提示_Javascript_Jquery_Flot - Fatal编程技术网

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

Javascript 如何在flot图表文本数据中将x轴值设置为工具提示,javascript,jquery,flot,Javascript,Jquery,Flot,我尝试用Flot char中的以下代码绘制图表。图表正在按预期打印,但未显示工具提示 $(函数(){ 风险值数据=[ [“2006年8月”,2], [“2007年8月1日], [“8月8日”,1.5], [“2009年8月”,0], [“8月10日”,0], [“8月11日”,0], [“8月12日”,0] ]; 变量选项={ 系列:{ 线路:{ 秀:没错, 线宽:1, 填充:是的, 填充颜色:{ 颜色:[{ 不透明度:0.5 }, { 不透明度:0.2 }] } }, 要点:{ 秀:没错,

我尝试用Flot char中的以下代码绘制图表。图表正在按预期打印,但未显示工具提示

$(函数(){
风险值数据=[
[“2006年8月”,2],
[“2007年8月1日],
[“8月8日”,1.5],
[“2009年8月”,0],
[“8月10日”,0],
[“8月11日”,0],
[“8月12日”,0]
];
变量选项={
系列:{
线路:{
秀:没错,
线宽:1,
填充:是的,
填充颜色:{
颜色:[{
不透明度:0.5
}, {
不透明度:0.2
}]
}
},
要点:{
秀:没错,
线宽:2
},
阴影大小:0
},
网格:{
悬停:是的,
可点击:正确,
勾选颜色:“#eeeeee”,
边框宽度:0,
悬停:是的,
可点击:正确
},
提示:正确,
工具提示:{
内容:“您对%x的销售额为$%y”,
默认主题:false
},
xaxis:{
模式:“类别”,
长度:0
},
亚克斯:{
最低:0
},
选择:{
模式:“x”
}
};
$.plot(#剖面图,[数据],选项);
//将Flot版本字符串添加到页脚
$(“#页脚”).prepend(“Flot”+$.plot.version+“–”);
});
#剖面图{
宽度:600px;
高度:300px;
}

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

tooltipOpts : {
        content : getTooltip,
        defaultTheme : false
      },
我定义了
getTooltip
以获得所需的输出:

function getTooltip(label, x, y) {
    return "Your sales for " + x + " was $" + y; 
}

它是有效的,正如你在里面看到的,但是你可能需要考虑上尉的建议,在评论中,看看你的情况是什么样的。

< P>最简单的方法是用回调替换<代码>内容< /代码>字符串:

tooltipOpts : {
        content : getTooltip,
        defaultTheme : false
      },
我定义了
getTooltip
以获得所需的输出:

function getTooltip(label, x, y) {
    return "Your sales for " + x + " was $" + y; 
}

它是有效的,正如你在上面看到的,但是你可能需要考虑上尉的建议,在评论中,看看你的情况是什么样的。

< P>解决方案是使用<强> TooTyPopts <强> >强> >内容< /强>方法,用回调函数正确地将动态数据返回到标签。

我发现,将第四个参数传递给“ToolTipts”的回调函数,实际上可以得到构建图表/图形的整个数据对象。 从这里,您可以轻松地提取X轴标签,使用该函数的第二个参数作为要提取的标签的索引

例如:

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

[
    {
        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 }
    }
}
从上述数据对象呈现的图表:

[
    {
        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 }
    }
}

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

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 }
}

解决方案是使用带有回调函数的工具提示->内容方法将动态数据正确返回到标签

我发现,将第四个参数传递给“ToolTipts”的回调函数,实际上可以得到构建图表/图形的整个数据对象。 从这里,您可以轻松地提取X轴标签,使用该函数的第二个参数作为要提取的标签的索引

例如:

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

[
    {
        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 }
    }
}
从上述数据对象呈现的图表:

[
    {
        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 }
    }
}

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

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 }
}

你用的是什么工具提示插件?@DNS我用jquery.flot.tooltip.js你能用fiddle吗?你的数据很乱。数据格式应该是
[x,y]
,其中x和y都应该是
整数
。您应该使用
模式:“时间”
并通过x的勾选格式设置程序功能返回日期。这适用于you@captain我已经创建了fiddle,请检查您使用的工具提示插件是什么?@DNS我使用jquery.flot.tooltip.js您可以使用fiddle吗?您的数据非常混乱。数据格式应该是
[x,y]
,其中x和y都应该是
整数
。您应该做的是使用
模式:“时间”
并通过勾号格式化程序函数返回x的日期。这对you@captain我已经创建了小提琴检查