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 ;
25 $series = new Chart
::Clicker
::Data
::Series
({
27 values => [map { $function->($_) } (@negx,@x) ],
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
({
40 $chart->add($legend, $CC_BOTTOM);
42 my $daxis = new Chart
::Clicker
::Axis
({
43 orientation
=> $CC_HORIZONTAL,
44 position
=> $CC_BOTTOM,
46 tick_values
=> [-25,-20,-15,-10,-5,0,5,10,15,20,25],
48 $chart->add($daxis, $CC_AXIS_BOTTOM);
49 my $raxis = new Chart
::Clicker
::Axis
({
50 orientation
=> $CC_VERTICAL,
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]);
66 $chart->add($plot, $CC_CENTER);
69 $chart->write($filename);