1

データベースを使用してデータの視覚化を試みています。

最初は morris.js を使用していましたが、これは私のデータでうまく機能しました。すぐに詳しく説明します。積み上げ横棒グラフや複数のグラフ線などを作成する必要があるため、d3.js を使用しようとしています。</p>

これは私のテーブルです: http://d.pr/i/ooDN (私は 10 の評判を持っていないので、写真を投稿できません)

チャートに 5 つの異なる線を引かなければなりません。「Heure」は x 軸で、他の列は異なる線です。

モリスの場合、私のデータは次のようになりました(JSONのr_printは.phpの最後にあります[{"x":"1","a":"34","b":"15","c":"49","d":"15","e":"3"}, {"x":"2","a":"36","b":"13","c":"49","d":"12","e":"2"}, … ]

ここで、x は時間データです (x 軸と ae の文字は、各時間のその他の線のドットです)。

しかし、d3.js では、これらの配列は機能しなくなり、php を変更して次のようなものを取得する必要がありました。

[{"x": 1, "y": 5}, { "x": 2, "y": 20}, { "x": 3, "y": 10}, … , { "x": 23, "y": 60}]

[{"x": 1, "y": 13}, { "x": 2, "y": 14}, { "x": 3, "y": 5}, … , { "x": 23, "y": 48}]

各行は異なる列です。

これは私のphpです:

<?php include 'connexion.php' ?>

<?php
////////////////// out_evo_tat   
$requete = $db->prepare('SELECT * FROM out_evo_tat');
$requete->execute();

while($row = $requete->fetch()) { 

    // $tableau[]=array('x'=>$row['Heure'],'a'=>$row['TAT_CHAINE'],'b'=>$row['TAT_PREA'],'c'=>$row['TAT_GLOBAL'],'d'=>$row['NBR_TESTS'], 'e'=>$row['NBR_TUBES'] );
    // $tableau[]=array($row['Heure'],$row['TAT_CHAINE'],$row['TAT_PREA'],$row['TAT_GLOBAL'],$row['NBR_TESTS'], $row['NBR_TUBES'] );

    $tableau[]= array (
        array($row['Heure'],$row['TAT_CHAINE']),
        array($row['Heure'], $row['TAT_PREA']),
        array($row['Heure'], $row['TAT_GLOBAL']),
        array($row['Heure'], $row['NBR_TESTS']),
        array($row['Heure'], $row['NBR_TUBES'])
        );  
}

echo json_encode($tableau);

?>

上記のコードを変更して、 d3.js で使用できるものを取得するにはどうすればよいですか?

ネストされたループを使用する必要があると思いますが、自分で解決することはできません...

分かりやすく説明するように心がけましたが、説明がわかりにくいかもしれませんので、お気軽にご質問ください。

ありがとうございました

4

2 に答える 2

0

PHP コードに示されているように配列を生成したら、次はその配列を使用して JSON 文字列の配列を生成します。

array_unshift($tableau, null);
$tableau = call_user_func_array('array_map', $tableau);
$json = array();
foreach ($tableau as $key => $val){
    $out = array();
    foreach ($val as $key2 => $val2){
        $item = new stdClass;
        $item->x = $val2[0];
        $item->y = $val2[1];
        $out[] = $item;
    }
    $json[] = json_encode($out);
}
print_r($json);

出力:

Array
(
    [0] => [{"x":0,"y":35},{"x":1,"y":34},{"x":2,"y":36},{"x":3,"y":35}]
    [1] => [{"x":0,"y":10},{"x":1,"y":15},{"x":2,"y":13},{"x":3,"y":15}]
    [2] => [{"x":0,"y":45},{"x":1,"y":49},{"x":2,"y":49},{"x":3,"y":50}]
    [3] => [{"x":0,"y":10},{"x":1,"y":15},{"x":2,"y":12},{"x":3,"y":5}]
    [4] => [{"x":0,"y":2},{"x":1,"y":3},{"x":2,"y":2},{"x":3,"y":1}]
)
于 2013-08-06T14:47:29.320 に答える