dustem_plot_legend.pro
2.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
PRO dustem_plot_legend,ps=ps,st_model,_Extra=extra,help=help,top=top,left=left,right=right,bottom=bottom,middle=middle,xr=xr,yr=yr,xlog=xlog,ylog=ylog,mergePAH=mergePAH,polar=polar,nototal=nototal,total=total,graintype=graintype,letter=letter
letter = 0
if not keyword_set(graintype) then graintype = st_model.grain.grains.grain_type
ntype = n_elements(graintype)
colors=dustem_grains_colors(ntype,ls,ps=ps)
if keyword_set(ps) then colors(0) = 0
if keyword_set(polar) then aligned = st_model.align.grains.aligned
if keyword_set(mergePAH) then begin
for i = 0, ntype-1 do begin
if graintype(i) eq 'PAH0' then begin
; Rename PAH0
graintype(i) = 'PAH'
; Remove PAH1 and shift grain types, linestyles and colors
graintype(i+1:ntype-2) = graintype(i+2:ntype-1)
aligned(i+1:ntype-2) = aligned(i+2:ntype-1)
ls(i+2:ntype-1) = ls(i+3:ntype)
colors(i+2:ntype-1) = colors(i+3:ntype)
ntype -= 1
endif
endfor
endif
if keyword_set(letter) then begin
if keyword_set(xlog) then x=xr(0)*(xr(1)/xr(0))^0.05 else x=xr(0)+(xr(1)-xr(0))*0.05
if keyword_set(ylog) then y=yr(1)/(yr(1)/yr(0))^0.09 else y=yr(1)-(yr(1)-yr(0))*0.09
print,'XXXXXXXX ',letter,' ',x,y
xyouts,x,y,'('+letter+')'
endif
if not keyword_set(xlog) then begin
dx = (xr(1)-xr(0))/10.
x = xr(0) + indgen(ntype)*0.
if keyword_set(right) then x += 7.3*dx
if keyword_set(middle) then x += dx*3
x1 = x + dx*0.5
x2 = x + dx*1.25
x3 = x + dx*1.5
endif else begin
dx = (xr(1)/xr(0))^0.1
x = xr(0) + indgen(ntype)*0.
if keyword_set(right) then x *= dx^7.3
if keyword_set(middle) then x *= dx^3
x1 = x * dx^0.5
x2 = x * dx^1.25
x3 = x * dx^1.5
endelse
if not keyword_set(ylog) then begin
dy = (yr(1)-yr(0))/10.
y0 = yr(1) - dy*1.2
if keyword_set(bottom) then y0 -= 9*dy
y = y0 - dy *(indgen(ntype)+1)
if not keyword_set(total) or keyword_set(nototal) then y += dy
endif else begin
dy = (yr(1)/yr(0))^(1./10.)
y0 = yr(1) / dy^1.2
if keyword_set(bottom) then y0 /= dy^9.
y = y0 / dy^(indgen(ntype)+1)
if not keyword_set(total) or keyword_set(nototal) then y *= dy
endelse
;Do not write legend if only one polarized grain
count = 0
if keyword_set(polar) then begin
j=where(aligned ne '',count)
if count eq 1 then begin
; Give same style like for total
total = 0
nototal = 1
y(j)=y0
endif
endif
if keyword_set(total) or (not keyword_set(nototal) and (keyword_set(polar) and count gt 1 or not keyword_set(polar))) then begin
; Total
oplot,[x1(0),x2(0)],y0*[1,1],color=colors(0)
xyouts,x3(0),y0,'Total',color=colors(0)
endif
; Each grain type
FOR i=0,ntype-1 DO begin
if keyword_set(polar) then if aligned(i) eq '' then begin
; ; Shift labels upward
; if i lt ntype-1 then y(i+1:ntype-1) = y(i:ntype-2)
continue
endif
oplot,[x1(i),x2(i)],y(i)*[1,1],line=ls(i+1),color=colors(i+1)
xyouts,x3(i),y(i),graintype(i),color=colors(i+1)
ENDFOR
END