6

ラベルをスキップするように設定x_label_skipしましたが、それでも最後のラベルを表示しようとし、他のラベルを上書きしていて、乱雑に見えます。最後のラベルを書くべきではありません。最後のラベルをスキップする必要があります。スキップするラベルの数を、データポイントの数の関数として設定しました。

これはどのように見えるかです:

コード:

my $graph = GD::Graph::lines->new(400, 500);
$graph->set(
  r_margin          => 2,
  x_label           => 'Date',
  y_label           => 'Price',
  title             => "$symbol1, $symbol2",
  dclrs             => [ qw(lred lblue lgreen lyellow lpurple cyan lorange) ],
  transparent       => 0,
  x_labels_vertical => 1,
  x_label_skip      => int ((@tmpDate * 8)/(400-50) + 1), # a function of # of data points, each label 8px. More labels, more skip.
) or die $graph->error;
4

2 に答える 2

5

わかりました。見つけました。モジュロを使用して、エントリの数をスキップするラベルの数で除算し、それをオフセットとして使用します。GD :: Graphは常に最後のラベルを印刷したいので、それを制御することはできませんが、印刷する最初のラベルを制御することはできます。私には後ろ向きに見えますが、何でも。

my $graph = GD::Graph::lines->new(400, 500);
my $skip = int ((@tmpDate * 8)/(400-50) + 1); # a function of # of data points, each label 8px. More labels, more skip. 
$graph->set( 
  r_margin          => 2,
  x_label           => 'Date',
  y_label           => 'Price',
  title             => "$symbol1, $symbol2",
  dclrs             => [ qw(lred lblue lgreen lyellow lpurple cyan lorange) ],
  transparent       => 0,
  x_labels_vertical => 1,
  x_label_skip      => $skip,
  x_tick_offset     => @tmpDate % $skip, # ensure last label doesn't overwrite second-to-last label
) or die $graph->error;
于 2012-04-01T03:32:54.620 に答える
0

x_last_label_skip => 1最後のラベルをスキップするだけで、必要に応じて正確に機能します。おそらく2012年には実装されていませんでしたが、現在は実装されています。

于 2015-04-14T05:19:49.690 に答える