javascript - 使用 CanvasJS 在图表中显示 Y 轴

标签 javascript php mysql canvasjs

我制作了一个图表,显示机器以及修复它们所需的时间(机器 X,时间 Y) 数据通过 mysql 动态加载,如下所示

<?php
include_once(“connexion.php”);
ini_set(‘max_execution_time’,300);
//ini_set(‘error_reporting’, E_ALL);

$sq = “select machine,date_tech,time(time_fin – time_deb) as diff from action_archiv_tech WHERE (date_tech BETWEEN ‘2018-09-10’ AND ‘2018-10-06’)”;
$r = mysql_query($sq) or (die(mysql_error()));
while($tab = mysql_fetch_assoc($r)) {
$machine = $tab[‘machine’];
$diff = $tab[‘diff’];
// $data[] = [“label”=>$machine, “y”=>$diff];
$data[] = array(
‘label’ => $tab[‘machine’],
‘y’ => $tab[‘diff’]
);
}

?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset=”UTF-8”>
<script>

window.onload = function () {

var chart = new CanvasJS.Chart(“chartContainer”, {
theme:”light2″,
animationEnabled: true,
title:{
text: “PM”
},
axisY :{
includeZero: false,
title: “Heures”,
suffix: “H”
},
toolTip: {
shared: “true”
},
legend:{
cursor:”pointer”,
itemclick : toggleDataSeries
},
data: [
{
type: “spline”,
showInLegend: true,
yValueFormatString: “##.00H”,
name: “Curative”,
dataPoints: <?php echo json_encode($data); ?>
}

]
});
chart.render();

function toggleDataSeries(e) {
if (typeof(e.dataSeries.visible) === “undefined” || e.dataSeries.visible ){
e.dataSeries.visible = false;
} else {
e.dataSeries.visible = true;
}
chart.render();
}

}
</script>
</head>
<body>
<div id=”chartContainer” style=”height: 370px; max-width: 1920px; margin: 0px auto;”></div>
<script src=”../../canvasjs.min.js”></script>
</body>
</html>

但是结果并不像预期

结果:/image/zyIZM.png

你能帮我弄清楚如何解决这个问题吗:)

最佳答案

看起来您正在 y 值中传递日期时间,而 CanvasJS 仅支持 axisY 中的数字。请引用documentation了解更多信息。但是,您可以通过将 -values 作为时间戳传递并格式化轴标签和工具提示中的值来解决此问题,如下例所示,这里是 JSFiddle对于同样的。

var chart = new CanvasJS.Chart("chartContainer", {
  title: {
    text: "Machine Operating Time"
  },
  axisY: {
    minimum: (new Date(2016, 0, 25, 17, 30)).getTime(),            
    interval: (12 * 60 * 60 * 1000),
    labelFormatter: function(e){
      return CanvasJS.formatDate(e.value, "DD-MMM h:mm TT");
    }
  },
  toolTip:{
    contentFormatter: function ( e ) {
      return "<strong>Machine " + e.entries[0].dataPoint.label + "</strong></br> Start Time: " +  CanvasJS.formatDate(e.entries[0].dataPoint.y[0], "DD-MMM h:mm TT") + "</br> Stop Time: " +  CanvasJS.formatDate(e.entries[0].dataPoint.y[1], "DD-MMM h:mm TT");  
    }},
  data: [{
      type: "rangeColumn",
      dataPoints: [
        { label: "A", y: [(new Date(2016, 0, 25, 18, 30)).getTime(), (new Date(2016, 0, 26, 11, 00)).getTime()] }, //.getTime() returns timestamp => y-value is numeric
        { label: "B", y: [(new Date(2016, 0, 26, 12, 00)).getTime(), (new Date(2016, 0, 27, 14, 00)).getTime()] },
        { label: "C", y: [(new Date(2016, 0, 27, 3, 30)).getTime(), (new Date(2016, 0, 27, 14, 00)).getTime()] },
        { label: "D", y: [(new Date(2016, 0, 27, 12, 00)).getTime(), (new Date(2016, 0, 28, 14, 00)).getTime()] }  
      ]
 	}]                      
});
chart.render();
<script src="http://canvasjs.com/assets/script/canvasjs.min.js"></script>
<div id="chartContainer" style="height: 260px; width: 100%;"></div>

关于javascript - 使用 CanvasJS 在图表中显示 Y 轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52684236/

相关文章:

mysql - 有没有办法将 Mosquitto 有效负载存储到 MySQL 数据库中以供历史记录使用?

javascript - 在javascript中获取通用时区?

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

php - 我的 Laravel 项目未连接到 XAMPP 数据库

javascript - 如何使用 javascript 和 bootstrap 表对多个表列进行搜索?

php - 比较 PHP 的 NumberFormatter::formatCurrency 结果

sql - mysql查询将数据从转储导入现有数据并覆盖新条目

javascript - 插值不反射(reflect) Angular 应用程序中的最新值

javascript - 在 Web 服务器上部署 nodejs 应用程序

javascript - Typescript 没有选择 Jest 类型