Flot - 将水平时间线与 'standard' 线组合
Flot - combine horizontal timeline with 'standard' line
根据我发现的 here,我能够很容易地制作水平时间线图表。我现在想做的是添加一个额外的折线图(或多个附加图)来覆盖该时间线。时间轴将显示一个日期范围内的促销(广告)运行,我需要显示销售的折线图,例如,在整个日期范围内。
如果我这样做,我就成功地在时间轴上绘制了宣传片:
var d1 = [[(new Date("2016-12-01")).getTime(), 1], [(new Date("2016-12-10")).getTime(), 1]];
var d2 = [[(new Date("2016-12-12")).getTime(), 2], [(new Date("2016-12-20")).getTime(), 2]];
var d3 = [[(new Date("2016-12-21")).getTime(), 3], [(new Date("2016-12-31")).getTime(), 3]];
var plot = $.plot($chartDiv, [d1,d2,d3], {
xaxis:{mode:"time", timeformat:"%Y-%m-%d"},
yaxis:{ticks:[[1, "Promo 1"],[2, "Promo 2"],[3, "Promo 3"]]}
});
这会产生如下内容:
http://i.imgur.com/m0bjegQ.png
我尝试过多种添加销售数据和配置选项的方法,但均无济于事。这是我最接近的:
var d1 = [[(new Date("2016-12-01")).getTime(), 1], [(new Date("2016-12-10")).getTime(), 1]];
var d2 = [[(new Date("2016-12-12")).getTime(), 2], [(new Date("2016-12-18")).getTime(), 2]];
var d3 = [[(new Date("2016-12-16")).getTime(), 3], [(new Date("2016-12-24")).getTime(), 3]];
var d4 = [d1,d2,d3];
var d5 = [
[(new Date("2016-12-01")).getTime(),201000],
[(new Date("2016-12-02")).getTime(),201000],
[(new Date("2016-12-04")).getTime(),356897],
[(new Date("2016-12-05")).getTime(),201000],
[(new Date("2016-12-06")).getTime(),545122],
[(new Date("2016-12-07")).getTime(),100324],
[(new Date("2016-12-08")).getTime(),348645],
[(new Date("2016-12-09")).getTime(),201000],
[(new Date("2016-12-10")).getTime(),729646],
[(new Date("2016-12-11")).getTime(),206456],
[(new Date("2016-12-12")).getTime(),357713],
[(new Date("2016-12-15")).getTime(),280647],
[(new Date("2016-12-17")).getTime(),398654],
[(new Date("2016-12-18")).getTime(),412054],
[(new Date("2016-12-19")).getTime(),167545],
[(new Date("2016-12-20")).getTime(),512345],
[(new Date("2016-12-21")).getTime(),612454],
[(new Date("2016-12-22")).getTime(),760214],
[(new Date("2016-12-23")).getTime(),715546],
[(new Date("2016-12-24")).getTime(),650654],
[(new Date("2016-12-25")).getTime(),712547],
[(new Date("2016-12-26")).getTime(),780242],
[(new Date("2016-12-27")).getTime(),725454],
[(new Date("2016-12-28")).getTime(),799142]
]
var chartData = [
{
data:d4,
yaxis:1
},
{
data:d5,
yaxis:2
}
];
// plot it
var plot = $.plot($chartDiv, chartData, {
xaxis:{mode:"time", timeformat:"%Y-%m-%d"},
yaxes: [
{
position:"left",
ticks:[[1,"Promo 1"],[2,"Promo 2"],[3,"Promo 3"]],
max: 4
},
{
position: "right",
max: 800000,
}],
grid: {
mouseActiveRadius: 50,
hoverable: true,
clickable: true
}
});
结果是这样的:
http://i.imgur.com/ChcvSbn.png
我似乎无法显示宣传片。是因为两个数据集的配置不一样吗?如果是这样,我该如何正确地做到这一点?我是否需要 "fill in" 促销日期,所以它看起来像这样:
var d1 = [
[(new Date("2016-12-01")).getTime(), 1],
[(new Date("2016-12-02")).getTime(), 1],
[(new Date("2016-12-03")).getTime(), 1],
[(new Date("2016-12-04")).getTime(), 1],
[(new Date("2016-12-05")).getTime(), 1],
[(new Date("2016-12-06")).getTime(), 1],
[(new Date("2016-12-07")).getTime(), 1],
[(new Date("2016-12-08")).getTime(), 1],
[(new Date("2016-12-09")).getTime(), 1],
[(new Date("2016-12-10")).getTime(), 1]
];
(我很确定我也试过了。)
chartData
中的 d4
数组不是 Flot 的正确数据集。您应该直接在 chartData
:
中插入 d1
、d2
和 d3
var chartData = [
{
data:d1,
yaxis:1
},
{
data:d2,
yaxis:1
},
{
data:d3,
yaxis:1
},
{
data:d5,
yaxis:2
}
];
查看此 fiddle 以获得完整的工作示例。
您需要修改 chartData
数组的格式以符合 flot 期望的 data format。与其将多个数据集定义为一个系列(d1
、d2
、& d3
为 d4
),每个数据集都是它自己的系列:
var chartData = [
{
data:d1,
yaxis:1
},
{
data:d2,
yaxis:1
},
{
data:d3,
yaxis:1
},
{
data:d5,
yaxis:2
}
];
This JSFiddle 有您的图表的工作示例。如果您希望 d1
、d2
和 d3
的线条颜色匹配,您可以在新的 chartData
对象中指定。
根据我发现的 here,我能够很容易地制作水平时间线图表。我现在想做的是添加一个额外的折线图(或多个附加图)来覆盖该时间线。时间轴将显示一个日期范围内的促销(广告)运行,我需要显示销售的折线图,例如,在整个日期范围内。
如果我这样做,我就成功地在时间轴上绘制了宣传片:
var d1 = [[(new Date("2016-12-01")).getTime(), 1], [(new Date("2016-12-10")).getTime(), 1]];
var d2 = [[(new Date("2016-12-12")).getTime(), 2], [(new Date("2016-12-20")).getTime(), 2]];
var d3 = [[(new Date("2016-12-21")).getTime(), 3], [(new Date("2016-12-31")).getTime(), 3]];
var plot = $.plot($chartDiv, [d1,d2,d3], {
xaxis:{mode:"time", timeformat:"%Y-%m-%d"},
yaxis:{ticks:[[1, "Promo 1"],[2, "Promo 2"],[3, "Promo 3"]]}
});
这会产生如下内容: http://i.imgur.com/m0bjegQ.png
我尝试过多种添加销售数据和配置选项的方法,但均无济于事。这是我最接近的:
var d1 = [[(new Date("2016-12-01")).getTime(), 1], [(new Date("2016-12-10")).getTime(), 1]];
var d2 = [[(new Date("2016-12-12")).getTime(), 2], [(new Date("2016-12-18")).getTime(), 2]];
var d3 = [[(new Date("2016-12-16")).getTime(), 3], [(new Date("2016-12-24")).getTime(), 3]];
var d4 = [d1,d2,d3];
var d5 = [
[(new Date("2016-12-01")).getTime(),201000],
[(new Date("2016-12-02")).getTime(),201000],
[(new Date("2016-12-04")).getTime(),356897],
[(new Date("2016-12-05")).getTime(),201000],
[(new Date("2016-12-06")).getTime(),545122],
[(new Date("2016-12-07")).getTime(),100324],
[(new Date("2016-12-08")).getTime(),348645],
[(new Date("2016-12-09")).getTime(),201000],
[(new Date("2016-12-10")).getTime(),729646],
[(new Date("2016-12-11")).getTime(),206456],
[(new Date("2016-12-12")).getTime(),357713],
[(new Date("2016-12-15")).getTime(),280647],
[(new Date("2016-12-17")).getTime(),398654],
[(new Date("2016-12-18")).getTime(),412054],
[(new Date("2016-12-19")).getTime(),167545],
[(new Date("2016-12-20")).getTime(),512345],
[(new Date("2016-12-21")).getTime(),612454],
[(new Date("2016-12-22")).getTime(),760214],
[(new Date("2016-12-23")).getTime(),715546],
[(new Date("2016-12-24")).getTime(),650654],
[(new Date("2016-12-25")).getTime(),712547],
[(new Date("2016-12-26")).getTime(),780242],
[(new Date("2016-12-27")).getTime(),725454],
[(new Date("2016-12-28")).getTime(),799142]
]
var chartData = [
{
data:d4,
yaxis:1
},
{
data:d5,
yaxis:2
}
];
// plot it
var plot = $.plot($chartDiv, chartData, {
xaxis:{mode:"time", timeformat:"%Y-%m-%d"},
yaxes: [
{
position:"left",
ticks:[[1,"Promo 1"],[2,"Promo 2"],[3,"Promo 3"]],
max: 4
},
{
position: "right",
max: 800000,
}],
grid: {
mouseActiveRadius: 50,
hoverable: true,
clickable: true
}
});
结果是这样的: http://i.imgur.com/ChcvSbn.png
我似乎无法显示宣传片。是因为两个数据集的配置不一样吗?如果是这样,我该如何正确地做到这一点?我是否需要 "fill in" 促销日期,所以它看起来像这样:
var d1 = [
[(new Date("2016-12-01")).getTime(), 1],
[(new Date("2016-12-02")).getTime(), 1],
[(new Date("2016-12-03")).getTime(), 1],
[(new Date("2016-12-04")).getTime(), 1],
[(new Date("2016-12-05")).getTime(), 1],
[(new Date("2016-12-06")).getTime(), 1],
[(new Date("2016-12-07")).getTime(), 1],
[(new Date("2016-12-08")).getTime(), 1],
[(new Date("2016-12-09")).getTime(), 1],
[(new Date("2016-12-10")).getTime(), 1]
];
(我很确定我也试过了。)
chartData
中的 d4
数组不是 Flot 的正确数据集。您应该直接在 chartData
:
d1
、d2
和 d3
var chartData = [
{
data:d1,
yaxis:1
},
{
data:d2,
yaxis:1
},
{
data:d3,
yaxis:1
},
{
data:d5,
yaxis:2
}
];
查看此 fiddle 以获得完整的工作示例。
您需要修改 chartData
数组的格式以符合 flot 期望的 data format。与其将多个数据集定义为一个系列(d1
、d2
、& d3
为 d4
),每个数据集都是它自己的系列:
var chartData = [
{
data:d1,
yaxis:1
},
{
data:d2,
yaxis:1
},
{
data:d3,
yaxis:1
},
{
data:d5,
yaxis:2
}
];
This JSFiddle 有您的图表的工作示例。如果您希望 d1
、d2
和 d3
的线条颜色匹配,您可以在新的 chartData
对象中指定。