3.5. スケールの違うグラフを同時に表示する

X軸もしくはY軸のスケールが異なる複数のグラフを 同じ座標軸系に表示したいときがあります。 例えば、X軸は同じでもY軸の値が甚だしく違う場合、 左側のY軸目盛りと、右側のY軸目盛りを独立に描きたいという 時です。 ANGEL では、左右の軸、もしくは上下の軸で独立な値を取る オプションは用意されていませんが、ふたつのグラフを 重ねることにより実現できます。

例題として、次の様なふたつのグラフを考えて見ます。

List 3.11 ● グラフの重ね合わせ1

 1:  p: scal(0.5) nofr noms
 2:  x: E (MeV)
 3:  y: Multiplicity
 4:  p: xmin(0) xmax(5.0) ymin(0) ymax(70) nosp
 5:  h: x       y,3l
 6:     0.5     10
 7:     1.5     40
 8:     2.5     20
 9:     3.5     60
10:     4.5     30
11:
12:  z: xorg(1.3)
13:  x: E (MeV)
14:  y: d\sigma/d\Omega dE (nb/MeV/sr)
15:  p: xmin(0) xmax(5.0) ymin(0) ymax(5) nosp
16:  h:  x     y1,d6   ny2   dy1=[y1*y2/100]
17:      0.0    0.0     0.0
18:      1.0    0.4    50.0
19:      2.0    1.5    30.0
20:      3.0    2.5    20.0
21:      4.0    4.1    10.0
../_images/two001.png

図 3.16 グラフの重ね合わせ1

これらは、ふたつのグラフをマルチグラフセクションを用いて 並列したものです。ふたつを重ねるには、 12行目で xorg(0.0) とすれば良いのですが、 目盛りや、タイトルが重なってしまいます。 そこで以下のようにします。

List 3.12 ● グラフの重ね合わせ2

 1:  p: scal(0.5) nofr noms
 2:  p: ytic(1)
 3:  x: E (MeV)
 4:  y: Multiplicity
 5:  p: xmin(0) xmax(5.0) ymin(0) ymax(70) nosp
 6:  h: x       y,3l
 7:     0.5     10
 8:     1.5     40
 9:     2.5     20
10:     3.5     60
11:     4.5     30
12:
13:  z: xorg(0.0)
14:  p: ytxt(-1) ytic(-1) ynum(-1)
15:  x: E (MeV)
16:  y: d\sigma/d\Omega dE (nb/MeV/sr)
17:  p: xmin(0) xmax(5.0) ymin(0) ymax(5) nosp
18:  h:  x     y1,d6   ny2   dy1=[y1*y2/100]
19:      0.0    0.0     0.0
20:      1.0    0.4    50.0
21:      2.0    1.5    30.0
22:      3.0    2.5    20.0
23:      4.0    4.1    10.0
../_images/two002.png

図 3.17 グラフの重ね合わせ2

まず、2行目で最初のグラフの右目盛りを消します。 次に14行目で2つめのグラフのYタイトル、Y軸目盛り、Y軸目盛り数字を 右側だけの表示とします。以上で異なるスケールの2軸の同時表示が 完成です。