47 Histograms

スタイル histograms は 2 次元描画でのみ有効です。これは、データの各 列の並びから平行な棒グラフを作ります。plot コマンドの各要素は、それ に関する目盛りの値や凡例 (key) のタイトルが付属するかも知れませんが、 単一の入力データを指定する必要があります (例えば入力ファイルの 1 つの 列)。現在は、4 種類のヒストグラム形式のスタイルをサポートしています。


     set style histogram clustered {gap <gapsize>}
     set style histogram errorbars {gap <gapsize>} {<linewidth>}
     set style histogram rowstacked
     set style histogram columnstacked
     set style histogram {title font "name,size" tc <colorspec>}

デフォルトのスタイルは set style histogram clustered gap 2 に対応し ています。このスタイルでは、並列に指定されたデータの値の集合は、選択さ れたデータ列のそのそれぞれの序列 (行番号) に対応する x 座標の場所に、 各々箱のグループとして固められて置かれます。よって、<n> 個のデータ列を 並列に指定した場合、最初の固まりは x=1 を中心とする <n> 個の箱の固まり からなり、その各々の高さは、その <n> データ列各々の最初 (1 行目) の値 が取られます。その後に少し空白 (gap) が空けられ、次に各データ列の次 (2 行目) の値に対応する箱の固まりが x=2 を中心として置かれます。以下同様です。デフォルトの空白 (gap) 幅の 2 は、箱の固まり同士の間の空白が、箱 2 つの幅に等しいことを意味します。同じ列に対する箱は全て同じ色または同 じパターンで与えられます (以下参照: set style fill (100.86.4))。

箱の固まりそれぞれは、データファイルの 1 つの行から得られます。そのよ うな入力ファイルの各行の最初の項目が見出し (ラベル) でることは良くある ことです。その列にある見出し (ラベル) は、usingxticlabels オプ ションをつけることで、それに対応する箱の固まりの真下の x 軸に沿ったと ころに置くことができます。

errorbars スタイル は、各エントリに対して追加の入力列を必要とする以外は clustered スタイルにとても良く似ています。最初の列は、 clustered スタイルの場合と全く同様に箱の高さ (y の値) として保持され ます。

    2 列:       y yerr          # 線は y-yerr から y+err へ伸びる
    3 列:       y ymin ymax     # 線は ymin から ymax へ伸びる

誤差線の見た目は、現在の set errorbars の値と <linewidth> オプション 指定で制御できます。

積み上げ型のヒストグラムも 2 つの形式がサポートされています。それらは コマンド set style histogram {rowstacked|columnstacked} で選択できま す。これらのスタイルにおいて、選択された列のデータの値は積み上げられた 箱として集められます。正の値は、y=0 から上の方へ積み上げられ、負の値は 下へ向かって積み上げられます。正の値と負の値が混じってい場合は、上向き と下向きの両方の積み上げが生成されます。デフォルトの積み上げモードは rowstacked です。

スタイル rowstacked は、まず最初に選択された列の各行の値を x 軸のそ れぞれの位置に配置します: 1 行目の値は x=1 の箱、2 行目のは x=2、以下同様となります。2 番目以降に選択された列に対応する箱は、それらの上に積み重ねられて行きます。そして結果として、x=1 にできる箱の積み重ねは、各 列の最初の値 (1 行目の値) からなり、x=2 の箱の積み重ねは各列の 2 行目 の値、などのようになります。同じ列に対する箱は全て同じ色または同じパタ ーンで与えられます (以下参照: set style fill (100.86.4))。

スタイル columnstacked も同様ですが、こちらは各箱の積み上げは (各行 のデータからではなく) 各列のデータからなります。最初に指定された列の各 行のデータが x=1 の箱の積み上げを生成し、2 番目に指定した列の各行のデ ータが x=2 の箱の積み上げ、などのようになります。このスタイルでは、各 箱の色は、各データ項目の (列番号ではなく) 行番号から決定されます。

箱の幅はコマンド set boxwidth で変更できます。 箱の塗りつぶしスタイルはコマンド set style fill で設定できます。

histograms は x 軸は常に x1 軸を使いますが、y 軸に関しては y1 軸か y2 軸かを選択できます。plot 命令が、histograms と他のスタイルの描画の両方 を含む場合、histogram でない方は、x1 軸を使うか x2 軸を使うかを選択で きます。

一つ追加のスタイルオプション set style histogram nokeyseparators は、 複数のヒストグラムを含むグラフにのみ適切なものです。その場合の追加説明 については、以下参照: newhistgram ([*])

例:

Image figure_histclust
入力ファイルは、2, 4, 6, ... の列にデータ値を持ち、3, 5, 7, ... の列 に誤差評価を持つとします。以下の例は、2 列目、4 列目の値を箱の固まり型(clustered; デフォルトスタイル) のヒストグラムとして描画します。ここで は、plot コマンドで繰り返し (iteration) を使用していますので、任意の個 数のデータ列を一つのコマンドで処理できます。以下参照: plot for (89.10)


     set boxwidth 0.9 relative
     set style data histograms
     set style histogram cluster
     set style fill solid 1.0 border lt -1
     plot for [COL=2:4:2] 'file.dat' using COL

これは、x 軸上の各整数値を中心とするそれぞれ 2 つの箱 (鉛直な棒) 毎の 固まりによる描画を生成します。入力ファイルの最初の列にラベルが含まれて いるならそれを、以下の少し変更したコマンドで x 軸に沿って配置できます。


     plot for [COL=2:4:2] 'file.dat' using COL:xticlabels(1)

Image figure_histerrorbar
ファイルが、各データの測定値と範囲の情報の両方を含んでいる場合、描画に 誤差線を追加することができます。以下のコマンドは誤差線を (y-<error>) から (y+<error>) に引き、その頭に箱と同じ幅の水平線をつけます。誤差線 と誤差線の端の線は、黒で線幅 2 で描画されます。


     set errorbars fullwidth
     set style fill solid 1 border lt -1
     set style histogram errorbars gap 2 lw 2
     plot for [COL=2:4:2] 'file.dat' using COL:COL+1

以下は、同じデータを行毎の積み上げ型 (rowstacked) のヒストグラムで描画 する方法を示しています。これまでとは違い、以下の例では繰り返しを使うのでなく、明示的に別々の列を指定します。


     set style histogram rowstacked
     plot 'file.dat' using 2, ” using 4:xtic(1)

Image figure_histrows
これは、一つ一つの鉛直な棒が、データの一つの列に対応する描画を生成しま す。各棒は、2 つの部分の積み上げの形であり、それぞれの部分の高さが、デ ータファイルの 2 列目と 4 列目の値に対応します。

最後に以下のコマンド


     set style histogram columnstacked
     plot 'file.dat' using 2, ” using 4

Image figure_histcols
は、一つ一つがそれぞれデータ列に対応する、2 つの鉛直な積み重ねの棒を生 成します。x=1 にある棒は、データファイルの 2 列目の各行の値に対応する 箱からなります。x=2 にある棒は、データファイルの 4 列目の各行の値に対 応する箱からなります。

これは、gnuplot の通常の入力の縦、横の解釈を入れ換えることになりますの で、凡例のタイトルや x 軸の目盛りの見出しの指定も変更する必要がありま す。以下のコメント部分を参照してください。


     set style histogram columnstacked
     plot ” u 5:key(1)            # 1 列目を凡例タイトルに使用
     plot ” u 5 title columnhead  #

この 2 つの例は、全く同じデータ値を与えているのですが、異なる書式であ ることに注意してください。


Subsections
竹野茂治@新潟工科大学
2022-07-20