【发布时间】:2019-05-16 05:17:44
【问题描述】:
我是 highcharts 的新手。我已经使用 highcharts 创建了一个基本的折线图。现在,我想使用日期范围过滤数据。我该怎么做 ?我正在调用 AngularJS 的 API,因此如果在 AngularJS 中编码,我们将不胜感激。
I have tried using SetData and SetExtremes but could not really understand how it works.
https://api.highcharts.com/class-reference/Highcharts.Axis#setExtremes
https://api.highcharts.com/class-reference/Highcharts.Series#setData
//HTML
<div class="chart-container">
<canvas id="tempchartcanvas" style="padding-top:10px; height:210px;width:100%"></canvas>
</div>
//AngularJS
vm.TemperatureChart = function () {
var URL = url + "temperaturesensor/tempdata";
$http.get(URL).then(function (response) {
vm.TempChartData = [];
vm.TempInsertDate = [];
vm.TemperatureTableData = response.data;
angular.forEach(response.data, function (value, key) {
var obj = { Data: value.Data, ModifiedInsertDate: moment(value.ModifiedInsertDate).format('MM') };
vm.TempChartData.push(obj.Data);
vm.TempInsertDate.push(obj.ModifiedInsertDate);
var ctx = document.getElementById("tempchartcanvas");
var data = {
labels: vm.TempInsertDate,
datasets: [
{
label: "Temp",
data: vm.TempChartData,
backgroundColor: "darkblue",
borderColor: "blue",
fill: false,
lineTension: 0,
pointRadius: 0
},
]
};
Chart.pluginService.register({
beforeDraw: function (chart, easing) {
if (chart.config.options.chartArea && chart.config.options.chartArea.backgroundColor) {
var helpers = Chart.helpers;
var ctx = chart.chart.ctx;
var chartArea = chart.chartArea;
ctx.save();
ctx.fillStyle = chart.config.options.chartArea.backgroundColor;
ctx.fillRect(chartArea.left, chartArea.top, chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);
ctx.restore();
}
}
});
var options = {
credits: {
enabled: false
},
responsive: true,
maintainAspectRatio: false,
title: {
display: false,
position: "top",
text: "Temperature",
fontSize: 18,
fontColor: "#111"
},
legend: {
//labels: { fontColor: 'blue' , fontSize:20},
display: true,
position: "top"
},
chartArea: {
backgroundColor: "rgba(220,220,220,0.5)"
},
scales: {
xAxes: [{
gridLines: {
display: false
},
ticks: {
display: true,
fontSize: 10,
//fontFamily: "Abhaya Libre",
}
}],
yAxes: [{
gridLines: {
display: false
},
ticks: {
beginAtZero: true,
//fontColor: 'green',
fontSize: 15
}
}]
}
};
var chart = new Chart(ctx, {
type: "line",
data: data,
options: options
});
});
});
}
我想使用数据库中的 From 和 To 日期过滤图表。
【问题讨论】:
-
数据范围是 Highstock 产品的一部分:api.highcharts.com/highstock/rangeSelector。如果您想为用户提供一个工具来轻松更改图表极值,您可以使用它。要在 Highcharts 中以编程方式更改极端值,您可以设置
xAxis.min和xAxis.max或使用axis.setExtremes()方法。示例:jsfiddle.net/BlackLabel/axLzgypr、jsfiddle.net/BlackLabel/f2ymo8gz -
此处链接的 jsfiddle 文件显示了选择 x 轴的最小值或最大值。我想要的是设置2个文本框用于插入日期,然后应根据文本框中输入的日期过滤图表数据。
-
如果我理解正确的话,这个功能是一个自定义过滤器。因此您可以自己制作,然后使用
series.setData()、series.update()或chart.update()在图表上设置新数据。 API:api.highcharts.com/class-reference/Highcharts.Series#setData,api.highcharts.com/class-reference/Highcharts.Series#update
标签: highcharts datefilter