6

次のプロット コマンドは棒グラフを生成し、各棒の上に値がラベルとしてプロットされ、gprintf でフォーマットされます。

plot "data.txt" using 6:1 index 0 notitle with boxes linestyle 1,\
     "data.txt" using 6:(0.7):(gprintf("%5.2f", $1)) index 0 notitle \
                                       with labels font "Courier,34" rotate left

Courier ではなく見栄えの良い Helvetica フォントを使用して小数点を揃えられるように、値ラベルを右揃えにしたいと考えています。

では、上記のコマンドに理由を含めるにはどうすればよいでしょうか?

Gnuplot のドキュメントや Web で、この特定の問題に関する情報を見つけることができませんでした。他のラベルは簡単に正当化できますが、ラベルを使用してプロットする場合も可能ですか?

4

3 に答える 3

5

あなたの特定の例をテストすることはできませんが、次のようなものがあります。

...
plot "test.dat" using ..., \
"" using ($1-100000):2:3 with labels rotate left notitle
...

...「rotate left」の部分はOPから取られました。

ネット上でラベルの「位置合わせ」または「正当化」に関する情報を見つけることができませんでした。そこで、オンラインの gnuplot ヘルプを調べてみました。基本的に、関連するものは以下にありますhelp set label-どのように理解したのか正確にはわかりませんが、以下に私のコマンドログがあります;

$ gnuplot
...
    GNUPLOT
    バージョン 4.4 パッチレベル 2
...

端末タイプを「wxt」に設定
gnuplot> ラベルのヘルプ
申し訳ありませんが、「ラベル付き」のヘルプはありません
gnuplot> ヘルプ
 関数とデータは、多数のスタイルのいずれかで表示できます。
 `with` キーワードは、選択の手段を提供します。

 構文:
       { {線のスタイル | ls}
...
の 1 つはどこですか

      行 ドット ステップ エラーバー xerrorbar xyerrorlines
      ポイント インパルス fsteps エラーライン xerrorlines yerrorbars
      ラインポイント ラベル ...
...
gnuplot> ヘルプ ラベル
 `labels` スタイルは、データ ファイルから座標とテキストを読み取り、配置します。
 対応する 2D または 3D 位置のテキスト文字列。3 つまたは 4 つの入力列
 の基本データが必要です。....

      3 列: xy 文字列 # 2D バージョン
...
 「データ文字列」、「スタイル データの設定」も参照してください。

gnuplot> help set label
 `set label` コマンドを使用して、任意のラベルをプロットに配置できます。

 構文:
       ラベルを設定 {} {""} {at }
                 {左 | センター | 右}
                 {回転しない | 回転 {by}}
                 ...
 デフォルトでは、テキストは点 x、y、z に対して左揃えで配置されます。  合わせる
 ポイント x、y、z に対するラベルの配置方法に、
 位置合わせパラメータ。`left`、`right`、または `center` の場合があります。
 ポイントがテキストの左、右、または中央にあることを示します。
 プロットされた境界外のラベルは許可されていますが、干渉する可能性があります
 軸ラベルまたはその他のテキスト。

 `rotate` が与えられた場合、ラベルは垂直に書き込まれます(端末がそれを実行できる場合)。
 もちろんそうです)。  `rotate by ` が与えられた場合、適合端末は
 指定された角度でテキストを書き込もうとする; 不適合端末は
 これを縦書きとして扱います。

関連する部分は太字で示しています。そして、彼らは私が持っていた1つの誤解を説明していrotate leftます-OPの例で を見て、 のleft属性だと思いましたがrotate、そうではありません-leftは別の正当化パラメーターrotateですが、 は別の回転キーワードです(つまり、「反時計回りに90度回転rotate leftする」という意味ではありません) 」 私が最初に考えたように)。

その場合、これら 2 つのキーワードを逆にすることができます。

...
plot "test.dat" using ..., \
"" using ($1-100000):2:3 with labels left rotate notitle
...

...そしてまったく同じ出力プロットを取得します。そして、最後に に置き換えるleftright、次のようになります。

...
plot "test.dat" using ..., \
"" using ($1-100000):2:3 with labels right rotate notitle
...

... ラベルがまだ「左」(反時計回りに 90 度) 回転していることがわかりますが、現在はその位置に右揃えになっています。

さて、これが役に立てば幸いです、
乾杯!

于 2012-10-27T16:31:26.747 に答える
1

形式を使用して、印刷フィールドの幅を 5 スペースに指定し"%5.2f"ます。これは、小数部分に 2 つのスペース、小数点に 1 つのスペースを消費し、数値の整数部分には 2 つのスペースのみを残します。したがって、指定した以外の数値をプロットする0.7と、結果の文字列はより広くなります。また、Helvetica は非等幅書体であるため、数字の文字幅は同じではありません。したがって、出力を右揃えしても問題は解決しません。".11" と ".88" は小数点で揃えられません。

于 2010-08-16T07:48:07.253 に答える