我目前有以下高图,显示开始日期并输出接下来31天的数据值。有人知道我如何改进这一点,包括和结束日期,以便我可以按较小的特定数量过滤数据吗?在x轴上,我还试图只显示附加了数据的标签,并隐藏任何其他标签。感谢您的帮助。
我的代码如下:
<script type="text/javascript">
var chart;
$(document).ready(function () {
chart = new Highcharts.Chart({
chart: {
renderTo: 'container',
type: 'line',
marginRight: 130,
marginBottom: 25
},
title: {
text: '<?php echo $type ?>',
x: -20 //center
},
xAxis: {
categories: [ <? php
$start = $_POST["dateStart"];
$dates = array();
for ($i = 0, $days = date('t', strtotime($start)); $i < $days; ++$i) {
$dates[] = date('Y-m-d', strtotime($start.' + '.$i.' day'));
}
echo "'".implode("', '", $dates)."'"; ?> ]
},
yAxis: {
title: {
text: 'Total Amount'
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
},
tooltip: {
formatter: function () {
return '<b>' + this.series.name + '</b><br/>' + this.x + ': ' + this.y;
}
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'top',
x: -10,
y: 100,
borderWidth: 0
},
series: [ <? php
foreach($array as $legend = > $data) {
echo '{';
echo "name: '".$legend."',";
$values = array();
for ($i = 0; $i < $days; ++$i) {
$date = date('Y-m-d', strtotime($start.' + '.$i.' day'));
$values[] = isset($data[$date]) ? $data[$date] : 0;
}
echo 'data: ['.implode(', ', $values).'],';
echo '},';
} ?> ]
});
});
感谢
请注意以下内容不安全。您应该始终对用户提交的数据进行健全性检查。
xAxis: {
categories: [ <? php
$start = $_POST["dateStart"];
$end = $_POST["dateEnd"];
$dates = array();
$current=$start;
while($current<=$end){
$dates[]=$current;
$current=date('Y-m-d', strtotime($current.' + 1 day'));
}
echo "'".implode("', '", $dates)."'"; ?> ]
},