Plottable.Plots.Rectangle создание ректов шириной 0
У меня есть следующие данные:
[{
"date": "2016-10-12T00:00:00.000Z",
"parameter": "end_brick_temperature",
"value": 61.3,
"color": "green"
}, {
"date": "2016-10-12T00:00:00.000Z",
"parameter": "percentage_of_expected_messages_received",
"value": 99.6667,
"color": "green"
}, {
"date": "2016-10-12T00:00:00.000Z",
"parameter": "energy_used_kwh",
"value": 1.73418,
"color": "orange"
}, {
"date": "2016-10-12T08:00:00.000Z",
"parameter": "energy_used_kwh",
"value": 0.70354,
"color": "red"
}, {
"date": "2016-10-12T08:00:00.000Z",
"parameter": "end_brick_temperature",
"value": 57.7,
"color": "green"
}, {
"date": "2016-10-12T08:00:00.000Z",
"parameter": "percentage_of_expected_messages_received",
"value": 98.3333,
"color": "green"
}, {
"date": "2016-10-12T16:00:00.000Z",
"parameter": "percentage_of_expected_messages_received",
"value": 99.1667,
"color": "green"
}, {
"date": "2016-10-12T16:00:00.000Z",
"parameter": "energy_used_kwh",
"value": 0,
"color": "red"
}, {
"date": "2016-10-12T16:00:00.000Z",
"parameter": "end_brick_temperature",
"value": 42.2,
"color": "green"
}, {
"date": "2016-10-13T00:00:00.000Z",
"parameter": "energy_used_kwh",
"value": 1.73979,
"color": "orange"
}, {
"date": "2016-10-13T00:00:00.000Z",
"parameter": "end_brick_temperature",
"value": 66.2
}, {
"date": "2016-10-13T00:00:00.000Z",
"parameter": "percentage_of_expected_messages_received",
"value": 99.3333,
"color": "green"
}, {
"date": "2016-10-13T08:00:00.000Z",
"parameter": "end_brick_temperature",
"value": 59.8,
"color": "green"
}, {
"date": "2016-10-13T08:00:00.000Z",
"parameter": "energy_used_kwh",
"value": 0.711456,
"color": "red"
}, {
"date": "2016-10-13T08:00:00.000Z",
"parameter": "percentage_of_expected_messages_received",
"value": 98.3333,
"color": "green"
}]
Я пытаюсь создать тепловую карту с помощью Plottable.Plot.Rectangle со следующим кодом:
var xScale = new Plottable.Scales.Time().domain([data[0].date, data[data.length - 1].date]);
var xAxisDate = new Plottable.Axes.Time(xScale, "bottom");
var yScale = new Plottable.Scales.Category();
var yAxisParameters = new Plottable.Axes.Category(yScale, "left");
var plot = new Plottable.Plots.Rectangle()
.addDataset(new Plottable.Dataset(data))
.x(function (d) {
return d.date
}, xScale)
.y(function (d) {
return d.parameter
}, yScale)
.attr("fill", function (d) {
return d.color
});
var table = new Plottable.Components.Table([
[yAxisParameters, plot],
[null, xAxisDate]
]);
table.renderTo("svg#heatmap");
Однако он просто создает ректы с шириной 0, поэтому что-то не работает на оси х (дата):
<rect fill="green" width="0.0000028312475887345677"
x="-0.0000014156237943672838" height="81.66666666666667" y="0">
</rect>
1 ответ
Похоже, вы должны указать.x2(), например
.x2(function (d) {
return new Date().setHours(d.date.getHours() + 8);
}, xScale)