使用Chart.js和PHP动态创建图表

patpi77

完成支持票后,我们目前正在使用客户温度计来调查我们的客户。不幸的是,customerthermometers小部件的外观令人作呕。因此,我目前正在尝试使用Chart.js创建图表,并使用PHP从客户温度计的API中动态获取数据。

图表中考虑了PHP数组中的所有部分($ dataPoints),但“数据”除外,我真的不知道如何进一步进行。

<?php
$gold = file_get_contents( 'https://app.customerthermometer.com/api.php?apiKey=<api_key>&getMethod=getNumResponsesValue&temperatureID=1' );
$green = file_get_contents( 'https://app.customerthermometer.com/api.php?apiKey=<api_key>&getMethod=getNumResponsesValue&temperatureID=2' );
$yellow = file_get_contents( 'https://app.customerthermometer.com/api.php?apiKey=<api_key>&getMethod=getNumResponsesValue&temperatureID=3' );
$red = file_get_contents( 'https://app.customerthermometer.com/api.php?apiKey=<api_key>&getMethod=getNumResponsesValue&temperatureID=4' );

$dataPoints = array(
  array( "label" => "Gold Star" , "data" => $gold , "backgroundColor" => "rgba(255,215,0,1)"),
  array( "label" => "Green Light" , "data" => $green , "backgroundColor" => "rgba(0,128,0,1)"),
  array( "label" => "Yellow Light" , "data" => $yellow , "backgroundColor" => "rgba(255,255,0,1)"),
  array( "label" => "Red Light" , "data" => $red , "backgroundColor" => "rgba(255,0,0,1)" )
);
?>
<html>
<head>
<meta charset="utf-8">
<title>Chart Test</title>
</head>

<body>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <script src="../assets/chart28/dist/Chart.js"></script>
    <canvas id="myChart" width="100" height="20"></canvas>
<script>
var ctx = document.getElementById('myChart');
var myChart = new Chart(ctx, {
    type: 'bar',
    data: {
        labels: ['Gold Star', 'Green Light', 'Yellow Light', 'Red Light'],
        datasets: <?php echo json_encode($dataPoints, JSON_NUMERIC_CHECK); ?>
    },
    options: {
        scales: {
            yAxes: [{
                ticks: {
                    beginAtZero: true
                }
            }]
        }
    }
});
</script>
    <?php echo json_encode($dataPoints, JSON_NUMERIC_CHECK); ?>
</body>
</html>

编辑: $dataPoints

[{"label":"Gold Star","data":4,"backgroundColor":"rgba(255,215,0,1)"},{"label":"Green Light","data":2,"backgroundColor":"rgba(0,128,0,1)"},{"label":"Yellow Light","data":0,"backgroundColor":"rgba(255,255,0,1)"},{"label":"Red Light","data":0,"backgroundColor":"rgba(255,0,0,1)"}]

我还尝试过在中静态设置以下值datasets,这可以正常工作并为我提供所需的结果:

datasets: [{
    data: [ 4 , 2 , 0 , 0 ],
    backgroundColor: [
        "rgba(255,215,0,1)",
        "rgba(0,128,0,1)",
        "rgba(255,255,0,1)",
        "rgba(255,0,0,1)"
    ]

}]

工作代码(感谢@Camille):

<?php
$gold = file_get_contents( 'https://app.customerthermometer.com/api.php?apiKey=<api_key>&getMethod=getNumResponsesValue&temperatureID=1' );
$green = file_get_contents( 'https://app.customerthermometer.com/api.php?apiKey=<api_key>&getMethod=getNumResponsesValue&temperatureID=2' );
$yellow = file_get_contents( 'https://app.customerthermometer.com/api.php?apiKey=<api_key>&getMethod=getNumResponsesValue&temperatureID=3' );
$red = file_get_contents( 'https://app.customerthermometer.com/api.php?apiKey=<api_key>&getMethod=getNumResponsesValue&temperatureID=4' );

$dataPoints = array(
  array( "data" => array($gold) , "label" => "Gold Star" , "backgroundColor" => "rgba(255,215,0,1)"),
  array( "data" => array($green) , "label" => "Green Light" , "backgroundColor" => "rgba(0,128,0,1)"),
  array( "data" => array($yellow) , "label" => "Yellow Light" , "backgroundColor" => "rgba(255,255,0,1)"),
  array( "data" => array($red) , "label" => "Red Light" , "backgroundColor" => "rgba(255,0,0,1)" )
);

?>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>

<body>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <script src="../assets/chart28/dist/Chart.js"></script>
    <canvas id="myChart" width="100" height="20"></canvas>
<script>
var ctx = document.getElementById('myChart');
var myChart = new Chart(ctx, {
    type: 'bar',
    data: {
        labels: ['Customer Thermometer'],
        datasets: <?php echo json_encode($dataPoints, JSON_NUMERIC_CHECK); ?>
    },
    options: {
        scales: {
            yAxes: [{
                ticks: {
                    beginAtZero: true,
                }
            }]
        }
    }
});
</script>
</body>
</html>
卡米尔

的数据属性$dataPoints应为数组。如果获得单个值,则必须将其转换

...
$dataPoints = array(
  array( "label" => "Gold Star" , "data" => array($gold) , "backgroundColor" => "rgba(255,215,0,1)"),
  array( "label" => "Green Light" , "data" => array($green) , "backgroundColor" => "rgba(0,128,0,1)"),
  array( "label" => "Yellow Light" , "data" => array($yellow) , "backgroundColor" => "rgba(255,255,0,1)"),
  array( "label" => "Red Light" , "data" => array($red) , "backgroundColor" => "rgba(255,0,0,1)" )
);
...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用angular。使用chart.js创建动态数量的图表

使用chart.js创建动态图表

使用chart.js动态添加图表

创建外部JS页面以使用动态数量和类型的图表构建Google图表

使用ChartJS和AngularJS动态创建图表

使用 Chart.js 和动态数据加载图表 ASP.net MVC-Core

Chart.js使用X轴时间动态更新图表

无法使用 php 和 js 动态创建按钮

无法创建使用chart.js之独立图表

在Chart.js中创建分组和堆叠的图表

尝试通过 ajax 和 php 使用 chart.js 加载图表

使用PHP和JS在Chart.js中显示获取动态数据

如何使用chart.js显示图表?

动态更新Chart.js图表的值

动态创建的Chart.js图表过度填充了基于时间的x轴?

使用 Chart.js 在图表上显示多条动态垂直线

使用C#字符串使用Chart.js创建图表会导致问题

访问已创建的Chart.js图表

使用Google Chart API和PHP创建PieChart

如何使用Chart JS在一张图中创建带有动态X和Y轴的多折线图?

错误TypeError:“ this.canvas未定义” 用angular和chart.js创建图表的问题

SpagoBI:使用SpagoBI创建动态图表

创建图表时,是否可以在Chart.js中使用渐变而不访问图表上下文?

如何使用chart.js创建同时具有一条时间序列线和一条线性线的图表?

动态更改Angular js chart.js图表类型

使用 javascript 和 chart.js 在单个图表上显示两个图形的问题

如何使用实时图表动态创建笛卡尔图表

使用Chart.js检测图表部分的悬停事件

在Codeigniter中使用chart.js添加图表