2017-06-22 3 views
0

予想される数値(棒グラフ)と2つの予測される例(行)と比較して、作業週数のテーブルから自動的にデータセットを更新するための混合グラフがあります。手動で入力する必要がないようにグラフの@dataを自動的に更新するにはどうすればよいですか?GD :: Graphを自動的に更新するにはどうすればよいですか?

ここで私が取り組んできたことは次のとおりです: (例を簡単にするために、テーブルは "W25"を含む最初の行のデータです...そして3行目、別名1行目、最後の数は6.4である私は、後に他の人に対処し、今のハードコードされたそれらを残しておきます)Webページ上に生成されるテーブルの

例:。。

print "<p>\n"; 
print "<TABLE BORDER=1>\n"; 
print "<caption>Projected Weekly Output</caption>\n"; 
print "<TR><TH>WW<TH>Wafers\n"; 
foreach $ww (sort keys %ww_proj_hash) 
{ 
$qty_outs = $ww_proj_hash{$ww}; 
print "<TR><TD>$ww <TD align=center>$qty_outs\n"; 
} 
print "</TABLE><p>\n"; 

の$ WWは、行1と$ qty_outsです3行目は、以下にハードコードされたものと非常によく似た結果をもたらします。

my @data = (
    [ "W25", "W26", "W27", "W28", "W29", "W30", "W31", "W32", "W33", "W34", "W35"], 
    [  1,   2,  2.8, 3.6,  4,   5,  5.5,  6, 7, 7.5, 8 ], 
    [  1,   2,  2.8, 3.6,  4.4,   5.6,  6.4    ], 
    [  1,  1.95,  2.7, 3.4, 3.7,   4.7,  5,  5.5  ], 
); 


my $graphmixed = GD::Graph::mixed->new (500,350); 

$graphmixed->set(
    x_label   => 'X Label', 
    y_label   => 'Y label', 
    title   => 'Projected Supply vs. Request', 

    t_margin  => 5, 
    b_margin  => 2, 
    l_margin  => 5, 
    r_margin  => 5, 

    y_min_value  => 0, 
    y_max_value  => 8, 
    y_tick_number => 8, 
    y_label_skip => 3, 
    cumulate  => 1, 

    types   => [qw(bars lines lines)], 
    dclrs   => [qw(#4f81bd #98B954 #BE4B57)], 
    borderclrs  => [qw(black)], 
    fgclr   => black, 
    textclr   => black, 
    labelclr  => black, 
    axislabelclr => black, 

    y_long_ticks  => 1, 
    line_width  => 4, 
    bar_spacing  => 10, 
    transparent  => 0, 
) or warn $graphmixed->error; 


$tmp_trend_file = 'graphmixed.png'; 
open(IMG, ">$tmp_trend_file") or die $!; 
binmode IMG; 
print IMG $graphmixed->plot(\@data)->png(); 
close IMG; 
print "<p><img src=$tmp_trend_file border=1><p>\n"; 
+1

表示を更新することができますいくつかのAJAXコードを記述する必要がある場合にのみ、それはあなたのように聞こえるのページを更新したい場合は、

を意図するものをおそらく実際にはHighcharts、D3、PlotlyなどのJavaScriptグラフ作成ライブラリを使用したいと思っています。 –

+0

「どのように@dataを自動的に更新して手動で入力する必要はありませんか? ? " - データ配列をハードコードするのではなく、HTMLテーブルに入れたのと同じ値で埋めたいと思っていますか? –

答えて

1

私はこのために多くの票を期待していませんが、最も簡単な方法は、このページを更新するために、ブラウザを取得し、この

<meta http-equiv="refresh" content="10" /> 

のようなあなたのHTMLの頭の中でmeta要素を追加することですcontent属性の秒数を過ぎるとサーバーコードが実行され、新しいページがブラウザに送信されます

ユーザーが入力しているうちに予期せずページが更新される可能性がありますが、そのようなあなたは「適切に」これを行うと、おそらくデータの変更は、その後、あなたが少なく停止で

関連する問題