App-GnuplotUtils

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

        - [doc] Add tips & tricks section in Description.


0.005   2023-10-21  Released-By: PERLANCAR; Urgency: medium

        [cli xyplot]

        - [ux] Allow one to multiple numbers (not just exactly 2) in each line
          of dataset file.

        - [ux] Check each number with Scalar::Util's looks_like_number().

        - [doc] Tweak Synopsis.


0.004   2023-10-20  Released-By: PERLANCAR; Urgency: low

        - No functional changes.

        [cli xyplot]

lib/App/GnuplotUtils.pm  view on Meta::CPAN

        $n = $#{ $args{dataset_files} };
    }

    my @datasets;
    for my $i (0..$n) {
        my (@x, @y);
        if ($args{dataset_datas}) {
            my $dataset = [split $fieldsep_re, $args{dataset_datas}[$i]];
            while (@$dataset) {
                my $item = shift @$dataset;
                warn "Not a number in --dataset-data: '$item'" unless Scalar::Util::looks_like_number($item);
                push @x, $item;

                warn "Odd number of numbers in --dataset-data" unless @$dataset;
                $item = shift @$dataset;
                warn "Not a number in --dataset-data: '$item'" unless Scalar::Util::looks_like_number($item);
                push @y, $item;
            }
        } else {
            my $filename = $args{dataset_files}[$i];
            my $content = File::Slurper::Dash::read_text($filename);

            chomp $content;
            my @numbers = split $fieldsep_re, $content;
            warn "Odd number of numbers in dataset file '$filename'" unless @numbers % 2 == 0;
            while (@numbers) {
                my $item = shift @numbers;
                warn "Not a number in dataset file '$filename': '$item'" unless Scalar::Util::looks_like_number($item);
                push @x, $item;

                $item = shift @numbers;
                warn "Not a number in dataset file '$filename': '$item'" unless Scalar::Util::looks_like_number($item);
                push @y, $item;
            }
        }

        my $dataset = Chart::Gnuplot::DataSet->new(
            xdata => \@x,
            ydata => \@y,
            title => $args{dataset_titles}[$i] // "(dataset #$i)",
            style => $args{dataset_styles}[$i] // 'linespoints',
        );



( run in 0.404 second using v1.01-cache-2.11-cpan-64827b87656 )