图表(数组 3 值)
Flot Chart (Array 3 values)
我想知道是否可以用 Flot 图表做到这一点,因为我不确定...
我在一个包含 3 行的数据库上有一个 table:日期开始、日期结束、用药
米PHP代码:
$sql = "SELECT * FROM medications ORDER BY DateStart";
$stmt = $PDO -> query($sql);
$result=$stmt -> fetchAll(PDO::FETCH_ASSOC);
foreach ($result as $row){
$dateini= $row['DateStart'];
$datend= $row['DateEnd'];
$medic= $row['Medication'];
$data1 = array(strtotime($dateini)*1000,$medic);
$data2 = array(strtotime($datend)*1000,$medic);
$data3[] = array($data1,$data2);
}
如果我这样做:
echo json_encode($data3);
我得到数组:
[[[1456531200000,"12"],[1456704000000,"12"]],[[1456531200000,"16"],[1456704000000,"16"]],[[1456617600000,"13"] ,[1456790400000,"13"]],[[1456704000000,"14"],[1457049600000,"14"]]]
<script>
var data3 = <?php echo json_encode($data3)?>;
$(function() {
var datasets = [
{
label: "Medication",
data: data3,
yaxis: 1,
color: "Yellow",
points: { symbol: "diamond", fillColor: "Yellow",show: true, radius: 6}
}
];
$.plot($("#flot-placeholder"), datasets ,options);
</script>
这:$.plot($("#flot-placeholder"), datasets ,options) 不绘制任何东西,但如果我绘制:
$.plot($("#flot-placeholder"), data3,options);
我明白了
是否可以获取图形书写数据集(在 $.plot 中)而不是 data3?
您的 datasets
数组有两个问题:
您的 data3
数组有多个数据系列,但您试图将它们全部放入 datasets
数组中的一个数据集对象中。将每个数据系列放在一个单独的对象中(在必要时有自己的选项)。
var datasets = [{
label: "Medication",
data: data3[0],
yaxis: 1,
color: "Yellow",
points: {
symbol: diamond,
fillColor: "Yellow",
show: true,
radius: 6
}
}, {
label: "Medication",
data: data3[1],
yaxis: 1,
color: "red",
points: {
symbol: diamond,
fillColor: "red",
show: true,
radius: 6
}
}, ... ]
Flot没有内置diamond
符号,你必须提供绘制菱形的函数。
function diamond(ctx, x, y, radius, shadow) {
var size = radius * Math.sqrt(Math.PI) / 2;
ctx.moveTo(x - size, y);
ctx.lineTo(x, y + size);
ctx.lineTo(x + size, y);
ctx.lineTo(x, y - size);
ctx.lineTo(x - size, y);
}
查看此 fiddle 以获得完整的工作示例。
我想知道是否可以用 Flot 图表做到这一点,因为我不确定...
我在一个包含 3 行的数据库上有一个 table:日期开始、日期结束、用药
米PHP代码:
$sql = "SELECT * FROM medications ORDER BY DateStart";
$stmt = $PDO -> query($sql);
$result=$stmt -> fetchAll(PDO::FETCH_ASSOC);
foreach ($result as $row){
$dateini= $row['DateStart'];
$datend= $row['DateEnd'];
$medic= $row['Medication'];
$data1 = array(strtotime($dateini)*1000,$medic);
$data2 = array(strtotime($datend)*1000,$medic);
$data3[] = array($data1,$data2);
}
如果我这样做:
echo json_encode($data3);
我得到数组: [[[1456531200000,"12"],[1456704000000,"12"]],[[1456531200000,"16"],[1456704000000,"16"]],[[1456617600000,"13"] ,[1456790400000,"13"]],[[1456704000000,"14"],[1457049600000,"14"]]]
<script>
var data3 = <?php echo json_encode($data3)?>;
$(function() {
var datasets = [
{
label: "Medication",
data: data3,
yaxis: 1,
color: "Yellow",
points: { symbol: "diamond", fillColor: "Yellow",show: true, radius: 6}
}
];
$.plot($("#flot-placeholder"), datasets ,options);
</script>
这:$.plot($("#flot-placeholder"), datasets ,options) 不绘制任何东西,但如果我绘制:
$.plot($("#flot-placeholder"), data3,options);
我明白了
是否可以获取图形书写数据集(在 $.plot 中)而不是 data3?
您的 datasets
数组有两个问题:
您的
data3
数组有多个数据系列,但您试图将它们全部放入datasets
数组中的一个数据集对象中。将每个数据系列放在一个单独的对象中(在必要时有自己的选项)。var datasets = [{ label: "Medication", data: data3[0], yaxis: 1, color: "Yellow", points: { symbol: diamond, fillColor: "Yellow", show: true, radius: 6 } }, { label: "Medication", data: data3[1], yaxis: 1, color: "red", points: { symbol: diamond, fillColor: "red", show: true, radius: 6 } }, ... ]
Flot没有内置
diamond
符号,你必须提供绘制菱形的函数。function diamond(ctx, x, y, radius, shadow) { var size = radius * Math.sqrt(Math.PI) / 2; ctx.moveTo(x - size, y); ctx.lineTo(x, y + size); ctx.lineTo(x + size, y); ctx.lineTo(x, y - size); ctx.lineTo(x - size, y); }
查看此 fiddle 以获得完整的工作示例。