我有一个混合图表,我希望我的数据集能够从具有工作周的表格自动更新与预期数量(条形图)和两个预测示例(行)。如何让@data自动更新图表,以便不必手动输入?
以下是我一直在使用的内容: (为了使示例更容易,表格是第一行的数据“W25”......和第三行,也就是第一行,最后一个数字是6.4。我稍后会处理其他的并暂时让他们硬编码。)
在网页上生成的表格示例:
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";
答案 0 :(得分:1)
我不希望对此投票多,但最简单的方法是在HTML的头部添加meta
元素
<meta http-equiv="refresh" content="10" />
这使浏览器在content
属性中的秒数后刷新页面,因此您的服务器代码将执行并向浏览器发送新页面
这是不鼓励的,因为当用户打字时意外刷新页面的UI设计很糟糕,但听起来就像你想要的那样
如果您想“正确”执行此操作,并且可能仅在数据更改时更新页面,那么您需要编写一些可以更少破坏性地更新显示的AJAX代码