23.2.3 例: 注釈 (Example: annotation)

マークが変形可能であるという事実は、ひとつのマーク定義は、描画範囲や描 画要素群に注釈をつけたマークアップ要素として、適切に伸縮して描画できる マークのテンプレートとして使えることを意味します。以下の例は、ひとつ定 義したマークを、棒グラフの選択したグループのハイライトとラベルに合わせ て配置し水平方向に伸縮して使用しています。 この例は以下のデモを簡略化したものです。 mark_grouping.dem

フルのデモでは、最も左の x の値と各グループの水平の広がりは、入力デー タ集合から計算していますが、ここではそれらの値は事前に計算し、$markup に保存されていると仮定します。

マークとラベルを y 軸でなく y2 軸に対して描画することは、データの特定 の y の範囲から注釈のマークアップを分離するのに便利です。しかしこれは 必須ではありません。他の方法として、y 軸に対してマークを描画し、追加キ ーワード "noclip noautoscale" をつければ、マークが y 軸の範囲に寄与せ ず、それに対するクリッピングもされないようにできます。

\includegraphics[width=3in,keepaspectratio]{figure_marksannotate}


    $Group_mark << EOD
    # x  y   1=stroke
      0 -0.5  1
      0  0    1
      1  0    1
      1 -0.5  1


    0.5  0.0  1
    0.5  0.5  1
    EOD


    set mark 1 $Group_mark


    $markup << EOD
    # ラベル     幅    左端
    "Group 1"     4       1
    "Group 2"     3       6
    "Group 3"     4      10
    "Group 4"     2      15
    EOD
    TOP = 9   # グループ化マークの y の値


    set link y2
    set ytics nomirror rangelimited
    set border 3


    plot $bar_data using ($0+$3):2:(0.8):3:xtic(1) with boxes \
           lc variable, \
         $markup using ($3-0.5):(TOP):2:(1)   axes x1y2 with marks \
           mt 1 units xy lt -1 lw 1, \
         $markup using ($3-0.5+$2/2):(TOP):1  axes x1y2 with labels \
           center offset 0,1.7

垂直方向に注釈に対して配置と伸縮をするマークを使用する補足的な例は以下 のデモにあります。 mark_labels.dem

竹野茂治@新潟工科大学
2025-02-26