无法在Chart :: Gnuplot图例中可视化点

时间:2015-05-21 20:29:06

标签: perl charts gnuplot

我希望有人可以帮助我弄清楚在使用Chart :: Gnuplot模块和'点'绘制图表时错误或可能出现的问题。在Perl。

以下是我的数据集:

    # RFE Chart object
   my $chart_RFE = Chart::Gnuplot->new(
       output => $out_file_RFE,
       terminal => "png",
       title => {
         text => "Step ROCOF",
         font => "arial, 12",
         },
       xlabel => $chart_xlabel, 
       ylabel => "ROCOF Error (Hz/s)",
       legend => {
         position => "outside top",
         align => "left",
       },
   );

   # RFE Dataset
   $dataSet = Chart::Gnuplot::DataSet->new(
      xdata => \@dataX,
      ydata => \@dataY,
      style => 'dots',
      color => $COLORS[3],
      title=> 'RFE',
   );

我想要点,因为我有很多数据点可以图表。但是,它生成的图形图例在图例名称旁边没有显示任何点。如果我将样式更改为'点'

style => 'points',

不同的点出现在图表的图例中。有没有办法让点显示?我已经放大了传说区域,想知道他们是否只是小而没有出现。我也试过设置width =>选项但是没有做任何事情(因为我怀疑它不会因为线路而没有)。

任何人都知道这是否可能?

1 个答案:

答案 0 :(得分:2)

no option来更改图例中的磅值(或者#34;键,"当Gnuplot调用它时),所以你必须使用hack来达到预期的效果

首先,使用dots样式绘制数据集,但不要为其指定标题;然后使用不同的样式绘制虚拟数据集并指定标题:

use strict;
use warnings;

use Chart::Gnuplot;

my @x = map { rand } 0 .. 10_000;
my @y = map { $_ + 0.1 - rand 0.2 } @x;

my $chart = Chart::Gnuplot->new(
    output  => 'gnuplot.png',
    legend  => {
        position => 'outside top',
        align    => 'left'
    }
);

my $color = '#ff0000';

my $dataset = Chart::Gnuplot::DataSet->new(
    xdata => \@x,
    ydata => \@y,
    style => 'dots',
    color => $color
);

my $dummy = Chart::Gnuplot::DataSet->new(
    ydata     => [ 'inf' ],
    style     => 'points',
    pointtype => 'fill-circle',
    pointsize => 1,
    title     => 'foo',
    color     => $color
);

$chart->plot2d($dataset, $dummy);

输出:

Scatter plot with readable legend

请注意,对于Gnuplot的命令行版本,这是asked elsewhere,但实际上很难创建一个不使用Chart::Gnuplot绘制任何内容的虚拟数据集。使用y值"inf"是我唯一可以开始工作的东西,并不需要知道轴的范围。