1

この浮動小数点棒グラフを正しく表示するのに少し問題があり、浮動小数点のドキュメントはこれまでのところ役に立ちませんでした。最初にコンテキストを提供し、次に私の問題が何であるかを説明します。

  • 以下は、データを提供する php スクリプトです (重要なコード行のみを提供しました)。

    $sql = "select unix_timestamp(date(Date_Found))*1000 as day, count(Virus_Name) as nb from machine_virus_info where Virus_name!='NULL' group by unix_timestamp(date(Date_Found))*1000;";
    $result = mysql_query($sql);
    
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC))               
    {
            $array[] = array ($row['day'], $row['nb']);
    
    
            #when echoed the array data looks like this using just date  date():
            #[["20130226000","2"],["20130227000","1"]]
    }
    
    echo json_encode( $array );
    
  • 以下は私のhtmlのJSです:

<script  id="virus_scan" language="javascript" type="text/javascript">
$(function()
    {
        var options = {
            series:
            {
                lines:  { show: false },
                points: { show: false }, 
                bars:
                {
                    show: true,
                    lineWidth: 1,
                    fill: 1,
                    fillColor: null,
                    align: "left",
                    barWidth: 24 * 60 * 60 * 1000,
                    horizontal: false
                }
            },
            xaxis:  { mode: "time" ,timeformat: "%y/%m/%d" },
            legend: { position:"nw" }
        };

        $.getJSON("php_scripts/virus_scan.php",
            function(data)
                {
                    $.plot($("#virus_scan"),data,options);
                }
            );
    }
);
</script>
  • 上記の情報を考えると、これは unix_timestamp(date()) を使用して取得した棒グラフです。 注: オフになっている時間に注意してください。 これは unix_timestamp(date()) を使用しています

注: unix_timestamp(date(date)) を使用しているときに json_encode($array) をエコーすると、配列は次のように出力されます。

[["1361833200000","2"],["1361919600000","1"]]
  • これは、unix_timestamp(date()) の代わりに date() のみを使用したときに得られる棒グラフです。 date() のみを使用

注: date(date) のみを使用して json_encode($array) をエコーすると、配列は次のように出力されます。

[["20130226000","2"],["20130227000","1"]]

アイデア:

  • X軸に日付を正しく表示したい
  • Y軸にnbの最大値を表示したい

  • 以下の例: ここに画像の説明を入力

  • この棒グラフのコードに基づいてコードを作成しましたが、明らかに結果は同じではありません。

問題がphpがデータを操作する方法に起因するのか、それとも棒グラフの構成に起因するのかがわからないため、問題をよりよく理解し、特定するのに役立つ可能性のある何かについて誰かが光を共有できれば.

ありがとう、スマック

4

1 に答える 1

2

ポイントの配列を提供する代わりに、次のようにシリーズ オブジェクトの配列を使用します。

[{
    data: [[timestamp, value], ...]
    label: "A"
}, {
    data: [[timestamp, value], ...]
    label: "B"
]

数段落下のドキュメントのデータ形式セクションを参照してください。

また、タイムスタンプと値が、例にあるように文字列ではなく整数であることを確認する必要があります。

最後に、タイムスタンプは JavaScript (UNIX * 1000) タイムスタンプでなければなりません。「日付」だけでの試みは間違いなく機能しません。

于 2013-02-27T15:47:33.667 に答える