Raku Land

Graphics::PLplot

github:azawawi

Graphics::PLplot

Build Status Build status

This module provides Perl 6 low and high-level native bindings for PLplot.

Note: Currently work in progress and the API is being implemented one brick at a time. Help and feedback is appreciated.

PLplot is a library of subroutines that are often used to make scientific plots in various compiled languages. PLplot can also be used interactively by interpreted languages such as Octave, Python, Perl and Tcl. The current version was written primarily by Maurice J. LeBrun and Geoffrey Furnish and is licensed under LGPL.

Example

use v6;
use Graphics::PLplot;

if Graphics::PLplot.new(
    device    => "png",
    file-name => "output.png"
) -> $plot  {

    # Begin plotting
    $plot.begin;

    # Create a labeled box to hold the plot.
    my $y-max = 100;
    $plot.environment(
        x-range => [0.0, 1.0],
        y-range => [0.0, $y-max],
        just    => 0,
        axis    => 0,
   );
    $plot.label(
        x-axis => "x",
        y-axis => "y=100 x#u2#d",
        title  => "Simple PLplot demo of a 2D line plot",
   );

    # Prepare data to be plotted.
    constant NSIZE = 101;
    my @points = gather {
        for 0..^NSIZE -> $i {
            my $x = Num($i) / (NSIZE - 1);
            my $y = Num($y-max * $x * $x);
            take ($x, $y);
        }
    };

    # Plot the data that was prepared above.
    $plot.line(@points);

    LEAVE {
        $plot.end;
    }
}

For more examples, please see the examples folder.

Installation

$ sudo apt install libplplot-dev
$ brew update
$ brew install plplot
$ zef install Graphics::PLplot

Testing

$ prove -ve "perl6 -Ilib"
$ zef install Test::META
$ AUTHOR_TESTING=1 prove -e "perl6 -Ilib"

Author

Ahmad M. Zawawi, azawawi on #perl6, https://github.com/azawawi/

License

MIT