in reply to Re^2: Updating Gtk2::Ex::Graph::GD
in thread Updating Gtk2::Ex::Graph::GD
#!/usr/bin/perl -w use strict; use Gtk2 '-init'; use Glib qw/TRUE FALSE/; use GD::Graph::Data; use GD::Graph::lines; my $met_data1; my $met_image1; my $met_graph1; my @utc; my @temp; my $pixbuf_orig; my $pixbuf; my $vp = Gtk2::Viewport->new(undef,undef); my $utc = 00; my $temp = 25.4; my $pres = 1019.3; my $rh1 = 20.0; my $rh2 = 20.4; my $timer_graph = Glib::Timeout->add(5000, \&graph); &data_build; Gtk2->main; sub data_build { my $data_window = Gtk2::Window->new('toplevel'); $data_window->signal_connect(delete_event=> sub{Gtk2->main_quit}); $data_window->set_title('Sonde Data'); $data_window->set_position('center'); $data_window->set_default_size(350,350); my $data_table = Gtk2::Table->new(6,2,FALSE); my $utc_label = Gtk2::Label->new("UTC"); my $utc_entry = Gtk2::Entry->new(); $utc_entry->set_editable(0); my $temp_label = Gtk2::Label->new("Temperature"); my $temp_entry = Gtk2::Entry->new(); $temp_entry->set_editable(0); my $pres_label = Gtk2::Label->new("Pressure"); my $pres_entry = Gtk2::Entry->new(); $pres_entry->set_editable(0); my $rh1_label = Gtk2::Label->new("Relative Humidity(1)"); my $rh1_entry = Gtk2::Entry->new(); $rh1_entry->set_editable(0); my $rh2_label = Gtk2::Label->new("Relative Humidity(2)"); my $rh2_entry = Gtk2::Entry->new(); $rh2_entry->set_editable(0); $met_graph1 = GD::Graph::lines->new(350, 200); $met_graph1->set( x_label => 'UTC', y1_label => 'Celcius', y2_label => 'Millibars', y1_max_value => 32, y1_min_value => 0, y2_max_value => 1100, y2_min_value => 0, y1_tick_number => 14, y2_tick_number => 14, two_axes => 2, line_width => 3, transparent => 0, dclrs => [ qw(red blue) ], x_label_position => 1/2, ); # The Data to Start with $met_data1 = GD::Graph::Data->new([ [ 0], [ 0], # [ 1100] ]) or die GD::Graph::Data->error; $met_graph1->plot($met_data1); my $loader = Gtk2::Gdk::PixbufLoader->new; $loader->write ($met_graph1->gd->png); $loader->close; $pixbuf = $loader->get_pixbuf; $pixbuf_orig = $pixbuf->copy(); $met_image1 = Gtk2::Image->new_from_pixbuf($pixbuf); $vp->add($met_image1); $data_table->attach_defaults($utc_label,0,1,0,1); $data_table->attach_defaults($utc_entry,1,2,0,1); $data_table->attach_defaults($temp_label,0,1,1,2); $data_table->attach_defaults($temp_entry,1,2,1,2); $data_table->attach_defaults($pres_label,0,1,2,3); $data_table->attach_defaults($pres_entry,1,2,2,3); $data_table->attach_defaults($rh1_label,0,1,3,4); $data_table->attach_defaults($rh1_entry,1,2,3,4); $data_table->attach_defaults($rh2_label,0,1,4,5); $data_table->attach_defaults($rh2_entry,1,2,4,5); $data_table->attach_defaults($vp,0,2,5,6); $data_window->add($data_table); $data_window->show_all; return 1; } sub graph{ my $utc_data; my $temp_data; my $count; $utc = $utc + 5; push(@utc,$utc); my $length = @utc; shift(@utc) if $length > 10; $temp = $temp - 0.05; push(@temp,$temp); $length = @temp; shift(@temp) if $length > 10; my $num = $met_data1->num_points(); if ($met_data1->num_points() == 10) { for($count=0;$count<=$num-1;$count++) { print "$count $temp[$count]\n"; $met_data1->set_x($count,$utc[$count]); $met_data1->set_y(1,$count,$temp[$count]); } }else{ $met_data1->add_point($utc,$temp); } $num = $met_data1->num_points(); my @values = $met_data1->y_values(1); foreach my $kid(@values) { print "$num $kid\n"; } #$pres = $pres - 3.2; #$rh1 = $rh1 - 0.01; #$rh2 = $rh2 - 0.012; $met_graph1->plot($met_data1); my $loader = Gtk2::Gdk::PixbufLoader->new; $loader->write ($met_graph1->gd->png); $loader->close; my $pixbuf = $loader->get_pixbuf; $pixbuf_orig = $pixbuf->copy(); $met_image1->set_from_pixbuf ($pixbuf); Gtk2->main_iteration while Gtk2->events_pending; $pixbuf = $pixbuf_orig->copy(); return 1; }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Updating Gtk2::Ex::Graph::GD
by deadpickle (Pilgrim) on Mar 07, 2009 at 19:56 UTC | |
by zentara (Cardinal) on Mar 07, 2009 at 20:39 UTC | |
by deadpickle (Pilgrim) on Mar 07, 2009 at 21:40 UTC | |
by zentara (Cardinal) on Mar 08, 2009 at 11:28 UTC |