Fix ifdef which checks for GSL1.12, again
[Math-GSL.git] / examples / clicker / chart
blob19e263ed6c505e03229079cdf1ed93bd9a55f4d5
1 #!/usr/bin/perl -w
2 use strict;
3 use Chart::Clicker;
4 use Chart::Clicker::Axis;
5 use Chart::Clicker::Data::DataSet;
6 use Chart::Clicker::Data::Series;
7 use Chart::Clicker::Decoration::Grid;
8 use Chart::Clicker::Decoration::Legend;
9 use Chart::Clicker::Decoration::Plot;
10 use Chart::Clicker::Drawing qw(:positions);
11 use Chart::Clicker::Drawing::Insets;
12 use Chart::Clicker::Renderer::Area qw/:options/;
13 use Math::GSL::SF qw/:bessel/;
15 my $function = shift || 'gsl_sf_bessel_J0';
16 my $name = shift || "Bessel Function J0(x)";
17 my $filename = shift || 'chart.png';
18 my $chart = new Chart::Clicker({ format => 'png', width => 400, height => 300 });
19 my @x = map { $_/ 100 } ( 0 .. 3000 ) ;
20 my @negx = map { -$_ } reverse @x ;
21 my $series;
24 no strict 'refs';
25 $series = new Chart::Clicker::Data::Series({
26 keys => [@negx, @x],
27 values => [map { $function->($_) } (@negx,@x) ],
28 name => $name,
29 });
32 my $dataset = new Chart::Clicker::Data::DataSet({ series => [ $series ] });
33 $chart->datasets([ $dataset ]);
35 my $legend = new Chart::Clicker::Decoration::Legend({
36 margins => new Chart::Clicker::Drawing::Insets({
37 top => 3
39 });
40 $chart->add($legend, $CC_BOTTOM);
42 my $daxis = new Chart::Clicker::Axis({
43 orientation => $CC_HORIZONTAL,
44 position => $CC_BOTTOM,
45 format => '%d',
46 tick_values => [-25,-20,-15,-10,-5,0,5,10,15,20,25],
47 });
48 $chart->add($daxis, $CC_AXIS_BOTTOM);
49 my $raxis = new Chart::Clicker::Axis({
50 orientation => $CC_VERTICAL,
51 position => $CC_LEFT,
52 format => '%0.2f'
53 });
54 $chart->add($raxis, $CC_AXIS_LEFT);
55 $chart->range_axes([ $raxis ]);
56 $chart->domain_axes([ $daxis ]);
58 my $grid = new Chart::Clicker::Decoration::Grid();
59 $chart->add($grid, $CC_CENTER, 0);
61 my $renderer = new Chart::Clicker::Renderer::Area( { fade => 1 });
62 my $plot = new Chart::Clicker::Decoration::Plot();
64 $plot->renderers([$renderer]);
65 $chart->plot($plot);
66 $chart->add($plot, $CC_CENTER);
67 $chart->prepare();
68 $chart->draw();
69 $chart->write($filename);