все.
Что я хочу, так это Bubble Chart (Chart.js) с данными из PHP.
PHP выполняет файл Python. * На самом деле, выполнение сложного алгоритма, однако здесь упростить с test.py.
index.php
<?php
$pyfile = "python ./test.py";
exec($pyfile, $output, $rtn);
$outputJson = json_encode($output);
?>
test.py
import sys
if __name__=='__main__':
print [{'data': [{'x':10 ,'y':10, 'r':30}],'backgroundColor':[ 'rgb(141,63,223)'],'label': ['test1']},
{'data': [{'x':20 ,'y':20, 'r':50}],'backgroundColor':[ 'rgb(141,29,73)'],'label': ['test2']},
{'data': [{'x':30 ,'y':30, 'r':70}],'backgroundColor':['rgb(16,230,73)'],'label': ['test3']}]
index.php
<body>
<canvas id="my_chart">
Canvas not supported...
</canvas>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.1/Chart.min.js">
</script>
Я должен перенести результат из php в javascript следующим образом.
<script>
var type = 'bubble';
var data = {
datasets: //I want to insert result from php here
]};
var options = {
title: {
display: true,
text: 'bubble-sample'
},
scales: {
xAxes: [{
ticks: {max: 50, min: 0,stepSize: 10}
}],
yAxes: [{
ticks: {max: 50,min: 0,stepSize: 10}
}]
},
};
var ctx = document.getElementById('my_chart').getContext('2d');
var myChart = new Chart(ctx, {
type: type,
data: data,
options: options
});
В конце концов, с Chart.js ...
var type = 'bubble';
var data = {
datasets: [
{
"data": [{
"x":40,
"y":30,
"r":30
},],
"backgroundColor":[ "rgb(141,63,223)" ],
"label": ["test1n"]
},
{
data: [{"x":20 ,"y":20, "r":50} ,],
backgroundColor:[ "rgb(141,29,73)"],
label: ["test2"]
},
{
data: [{"x":30 ,"y":30, "r":70} ,],
backgroundColor:["rgb(16,230,73)"],
label: ["test3"]
}
]};
var options = {
title: {
display: true,
text: 'bubble-sample'
},
scales: {
xAxes: [{
ticks: {max: 50, min: 0,stepSize: 10}
}],
yAxes: [{
ticks: {max: 50,min: 0,stepSize: 10}
}]
},
};
var ctx = document.getElementById('my_chart').getContext('2d');
var myChart = new Chart(ctx, {
type: type,
data: data,
options: options
});
Здесь я нашел, как использовать переменные php в javascript.
var outputjs = '<?php echo $outputJson; ?>'
Однако, это просто строка, потому что это происходит из "print" в файле python.
Как мне сделать так, чтобы этот скрипт Python работал в Chart.js как массив наборов данных ??