IDLでpsym=8のユーザ定義(丸、三角、四角、星、ダイヤ) - さとぶろぐ

プログラミング

IDLでpsym=8のユーザ定義(丸、三角、四角、星、ダイヤ)

IDLではプロットのマークを"psym"で決めることができ、以下のような値が割り振られています。

psym値とマークの対応

0 1 2 3 4 5 6 7 8 10
+ * ◻︎ × ユーザ定義 ヒストグラム

ここでpsym=8はユーザ定義と言って、プロットのマークをユーザが自由に決められます。

また、psym=0~7には基本的なマークがありますが、黒丸とか黒三角とか塗りつぶしたマークはありませんので、自分で定義しないといけません。

なので、ここでは5つのパターンについてサンプルプログラムを書いておきます。

丸の塗りつぶし

x = cos(findgen(41)/40*!dpi)
y = sin(findgen(41)/40*!dpi)
usersym,x, y,/fill

ダイヤ塗りつぶし

x = [ 0.0, -1.0, 0.0, 1.0]
y = [ 1.00.0,-1.0, 0.0]
usersym,x, y,/fill

三角形塗りつぶし

x = [0.0, -0.5, 0.5, 0.0]*2.1
y = ([sqrt(3.)/3, -sqrt(3.)/6., -sqrt(3.)/6., sqrt(3.)/3.]-(sqrt(3)/12) )*2.1
usersym, x, y,/fill

四角塗りつぶし

x=[-1.0, -1.0, 1.0, 1.0]
y=[ 1.0, -1.0,-1.0, 1.0]
usersym, x, y,/fill

星型塗りつぶし

a=2.
x1=a*
cos(findgen(5)/5*2*!dpi+0.5*!dpi)
y1=a*sin(findgen(5)/5*2*!dpi+0.5*!dpi)

b=
sin(18/180.*!dpi)/sin(54/180.*!dpi)
x2=b*cos(findgen(5)/5*2*!dpi+1.5*!dpi)
y2=b*sin(findgen(5)/5*2*!dpi+1.5*!dpi)

x = [x1[
0], x2[3], x1[1], x2[4], x1[2], x2[0], x1[3], x2[1], x1[4], x2[2], x1[0]]
y = [y1[0], y2[3], y1[1], y2[4], y1[2], y2[0], y1[3], y2[1], y1[4], y2[2], y1[0]]
usersym, x, y,/fill

 

実行

これらのプログラムの後に

plot, xx, yy, psym=8

みたいな感じにすれば、上記のマークでプロットをすることができます。

塗りつぶしたくなければ、/fillのキーワードを外します。

詳しくは、Harrisのウェブサイトをどうぞ。
https://www.harrisgeospatial.com/docs/USERSYM_Procedure.html

-プログラミング

Copyright© さとぶろぐ , 2020 All Rights Reserved Powered by AFFINGER5.