eyecatch thumbnail

idl legend() を使って凡例を付ける方法

Profile picture
ルッチ / Lucci
2019.10.27

Contents

はじめに

idl の legend() 関数を使って、グラフに凡例を付ける方法を紹介します。

この記事の対象者は、idl の plot() 関数を使った図の出力はできるようになったけど、図の凡例の付け方が分からなくて困っている人です。

この記事を読んでその内容を実践すれば図の凡例が簡単に付けられるようになるはずです。

興味のある方は、そのまま読み進めていただければと思います。

それでは、参りましょう.

legend() の文法

legend() 関数の、基本的な文法は以下の通りです。

plt0 = plot(...)

plt1 = plot(..., /overplot)

; legend() 
plt_legend = legend($
  target = [plt0, plt1],$
  position = [xUpperRigth, yUpperRight],$
  /data,$
  /auto_text_color)

legend() を使う時に定義する引数は基本的に以下の2つです。

  • target = [ ]

    • : 凡例を表示する図を定義する
  • position = [xUpperRight, yUpperRight]

    • : 凡例ボックスの右上の座標を定義する

ここでは plt0plt1 を図の凡例として出力すると想定しているので、target = [plt0, plt2] と定義しています。

/dataplot で使用しているプロットデータを基準にして、position を決定するという意味です。

/auto_text_colorplot 内で color を定義した場合、その定義された色と同じ色を凡例にも適応するという意味です。

補足ですが、legend() は最後に出力した図に、凡例を付けるようになっています。

上の例だと plt1/overplot しているので、plt0 に凡例がつきます。

さて、続いては実際に legend() を使ってみましょう。

legend() の具体例

簡単な例を使って、legend() の使い方を紹介します。

sin 関数を 黒色 blackplt0 として出力し、cos 関数を 赤色 redplt1 として出力し、その図に凡例を付けてみたいと思います。

ソースコードを以下に提示しました。 idl を読むのに慣れている人は、以下のソースコードだけ見れば何をしているのかわかると思います。

pro sample_legend

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; x [0, 2pi]
; sin (color = 'black')
; cos (color = 'red')
; + legend
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

saveDirName = '~/Downloads/'
saveFileName = 'figure_sample_legend.png'

n = 100d
x = dindgen(n, start = 0, increment = 2d*!pi/n)
y0_sin = sin(x)
y1_cos = cos(x)

plt0 = plot(x, y0_sin,$
    ; x 
    xtitle = 'x [rad]',$
    xrange = [0, 2d*!pi],$
    xtickvalues = [0, !pi, 2d*!pi],$
    xtickname = ['0', '$ \pi $', '2 $\pi $'],$
    xminor = 1,$
    ; y
    ytitle = '',$
    yrange = [-1, 1],$
    ytickvalues = [-1, 0, 1],$
    ytickname = ytickvalues,$
    yminor = 4,$
    ; title
    title = '',$
    ; name
    name = 'sin()',$
    ; linestyle
    linestyle = 0,$ ; solid line
    thick = 2,$
    color = 'black',$
    ; font
    font_size = 14,$
    font_name = 'Helvetica',$
    ; option
    /buffer)

plt1 = plot(x, y1_cos,$
    ; name
    name = 'cos()',$
    ; linestyle
    linestyle = 0,$ ; solid line
    thick = 2,$
    color = 'red',$
    ; option
    /buffer,$
    /overplot)

plt_legend = legend($
    target = [plt0, plt1],$
    position = [1.85*!pi, 0.90],$
    font_name = 'Helvetica',$
    font_size = 8,$
    /data,$
    /auto_text_color)

plt_polyline = polyline($
    [0, 2d * !pi],$
    [0, 0],$
    target = plt0,$
    /data)

plt0.save, saveDirName + saveFileName

end

plot() で分からない箇所がある方は、idl plot の使い方 をご覧ください。

plt_legend = legend(...) で凡例を付けています。

書き方は、font_namefont_size を指定している箇所が異なりますが、先ほど legend() の文法 で紹介したものとほとんど同じです。

legend() 関数のより奥深い使い方は IDL Reference legend() をご覧ください。

おわりに

IDL の基本から応用まで幅広く扱っている日本語の書籍は 2019 年現在で 2-3 冊しかありません。 その中で私のおすすめ書籍は、IDLプログラミング入門―基本概念から3次元グラフィックス作成まで― (KS理工学専門書 です。 基本から応用まで幅広く知ることができるようになります。 IDL の書籍って需要がほとんどないので、その分単価が高くなっていまして、本一冊で約1万円します。 個人で買うのは厳しいところがありますので、指導教員の研究費で買うのが良いと思います。

この記事が誰か一人の役にでも立てば、嬉しい限りです:)

最後までお読みいただき、ありがとうございました。

愛用品

  • Xiser Pro Trainer
    1日中踏み続けられる強靭なステッパーでおすすめです.
  • HHKB Professional 墨 x HHKB キートップセット 白
    ボディは墨色キートップは白色なのでめちゃめちゃ目に優しいのでおすすめです.
  • Apple Magic Mouse 2
    トラックパッドは指が攣りそうになりますけどマウスはその心配が無いのでおすすめです.
  • Apple MacMini
    ミニマルでパワフルなデスクトップ PC なので個人的に大好きなのでおすすめです.
  • iiyama Display 27inch FullHD
    鮮明すぎない画面で目も疲れにくいですし何より高さ調節できるのが最高なのでおすすめです.
  • KINTO UNITEA 550ml
    500ml の大容量でこの綺麗なデザインは他にみたことがないのでおすすめです.

関連記事


大学生へのお知らせ

ここまで記事を読んでくれて本当に嬉しいです、ありがとうございます。

プログラミングを始めたばかりの頃って「やるぞ!」という気持ちは強めですが、 実際に取り組み始めると「何からどうやってどこまでやればいんだ?」 という感じで羅針盤を失うことが多いような気がします。(実体験)

そんな勉強熱心で向上心高めなんだけど目指す姿が曖昧な大学生の方に感謝の意も込めて、就職活動までサポートするプログラミングスクール「レバテックカレッジ」を紹介します。↓

Levtech-college

「自走力」のあるエンジニアを最短3ヶ月で目指せるカリキュラムが月額30,000円で用意されていて、 現段階の「目指す姿が曖昧で何から手をつければいいかわからない状態」から脱却できます。

自分は実際にIT企業で働いていますが、「自走力」のあるエンジニアの方にはいつも助けられています。

なので、目指す姿が曖昧な人はとりあえずレバテックカレッジが導いてくれる 「自走力のあるエンジニア」を目指してみるのはスタートダッシュとしてはアリです。

レベルアップしてからジョブチェンするのはRPGでも常套手段ですし、 レバテックカレッジで一通りのスキルを習得してから自分の目指す姿を再定義するといいかもです。

「自走力のあるエンジニア」って実際どんなエンジニアなの? 何から手をつければいいかわからないから教えて欲しい、 という人は上のテキストリンク/画像リンクから「無料相談会」への申し込みをお願いします。

よきエンジニアライフを!