@mvn_kp_tag_parser
@mvn_kp_tag_list
@mvn_kp_range
@mvn_kp_range_select
@mvn_kp_tag_verify
pro MVN_KP_ALTPLOT, kp_data, parameter, time=time, list=list, range=range, $
title=title,thick=thick,linestyle=linestyle,symbol=symbol,$
directgraphic=directgraphic, log=log, xrange=xrange, yrange=yrange
MVN_KP_TAG_PARSER, kp_data, base_tag_count, first_level_count, second_level_count, base_tags, first_level_tags, second_level_tags
if arg_present(list) then begin
list = strarr(250)
index2=0
for i=0,base_tag_count-1 do begin
if first_level_count[i] ne 0 then begin
for j=0,first_level_count[i]-1 do begin
if first_level_count[i] ne 0 then begin
list[index2] = '#'+strtrim(string(index2+1),2)+' '+base_tags[i]+'.'+strtrim(string(first_level_tags[index2-1]),2)
index2 = index2+1
endif
endfor
endif
endfor
list = list[0:index2-1]
return
endif else begin
if keyword_set(list) then begin
MVN_KP_TAG_LIST, kp_data, base_tag_count, first_level_count, base_tags, first_level_tags
return
endif
endelse
if keyword_set(range) then begin
MVN_KP_RANGE, kp_data
goto,finish
endif
if keyword_set(title) eq 0 then begin
if n_elements(parameter) eq 1 then title=''
if n_elements(parameter) ne 1 then title=strarr(n_elements(parameter))
endif
if keyword_set(thick) eq 0 then thick=1
if keyword_set(linestyle) eq 0 then linestyle=0
if keyword_set(symbol) eq 0 then symbol="None"
if keyword_set(log) eq 1 then xaxis_log = 1
if keyword_set(log) eq 0 then xaxis_log = 0
if keyword_set(directgraphic) eq 0 then begin
if Float(!Version.Release) GE 8.0 THEN directgraphic = 0
endif
if keyword_set(yrange) then begin
if (n_elements(yrange)/n_elements(parameter)) ne 2 then begin
print,'When using the YRANGE keyword, ranges must be set for each plot'
return
endif
endif
if keyword_set(xrange) then begin
if (n_elements(xrange)/n_elements(parameter)) ne 2 then begin
print,'When using the XRANGE keyword, ranges must be set for each plot'
return
endif
endif
if keyword_set(time) then begin
MVN_KP_RANGE_SELECT, kp_data, time, kp_start_index, kp_end_index
endif else begin
kp_start_index = 0
kp_end_index = n_elements(kp_data.orbit)-1
endelse
if n_elements(parameter) eq 1 then begin
pos = strpos(parameter,',')
if pos ne -1 then goto,overplots
if size(parameter,/type) eq 2 then begin
MVN_KP_TAG_VERIFY, kp_data, parameter,base_tag_count, first_level_count, base_tags, $
first_level_tags, check, level0_index, level1_index, tag_array
if check eq 0 then begin
x = kp_data[kp_start_index:kp_end_index].(level0_index).(level1_index)
y = kp_data[kp_start_index:kp_end_index].spacecraft.altitude
endif else begin
print,'Requested plot parameter is not included in the data. Try /LIST to confirm your parameter choice.'
goto,finish
endelse
endif
if size(parameter,/type) eq 7 then begin
MVN_KP_TAG_VERIFY, kp_data, parameter,base_tag_count, first_level_count, base_tags, $
first_level_tags, check, level0_index, level1_index, tag_array
if check eq 1 then begin
print,'Whoops, ',strupcase(parameter),' is not part of the KP data structure. Check the spelling, or the structure tags with the /LIST keyword.'
goto,finish
endif else begin
x = kp_data[kp_start_index:kp_end_index].(level0_index).(level1_index)
y = kp_data[kp_start_index:kp_end_index].spacecraft.altitude
endelse
endif
endif
if directgraphic eq 0 then begin
if n_elements(parameter) eq 1 then begin
w = window(window_title='Maven KP Data Altitude Plots')
plot1 = plot(x,y,ytitle='Spacecraft Altitude, km',xtitle=strupcase(string(tag_array[0]+'.'+tag_array[1])),$
title=title,thick=thick,linestyle=linestyle,symbol=symbol,xlog=xaxis_log,/current,xrange=xrange, yrange=yrange,$
xstyle=1, ystyle=1)
endif
endif
if directgraphic ne 0 then begin
if n_elements(parameter) eq 1 then begin
device,decomposed=0
!P.MULTI = [0, n_elements(parameter), 1]
plot,x,y,ytitle='Spacecraft Altitude, km',xtitle=strupcase(string(tag_array[0]+'.'+tag_array[1])),$
title=title,thick=thick,linestyle=linestyle,xlog=xaxis_log,background=255, color=0,$
xrange=xrange,yrange=yrange,xstyle=1,ystyle=1
endif
endif
if n_elements(parameter) gt 1 then begin
if size(parameter,/type) eq 2 then begin
x = fltarr(n_elements(parameter),n_elements(kp_data[kp_start_index:kp_end_index].spacecraft.altitude))
y = kp_data[kp_start_index:kp_end_index].spacecraft.altitude
x_axis_title = strarr(n_elements(parameter))
for i=0,n_elements(parameter)-1 do begin
MVN_KP_TAG_VERIFY, kp_data, parameter[i],base_tag_count, first_level_count, base_tags, $
first_level_tags, check, level0_index, level1_index, tag_array
if check eq 0 then begin
x[i,*] = kp_data[kp_start_index:kp_end_index].(level0_index).(level1_index)
x_axis_title[i] = strupcase(string(tag_array[0]+'.'+tag_array[1]))
endif else begin
print,'Requested plot parameter is not included in the data. Try /LIST to confirm your parameter choice.'
goto,finish
endelse
endfor
endif
if size(parameter,/type) eq 7 then begin
for i=0, n_elements(parameter) -1 do begin
pos = strpos(parameter[i],',')
if pos ne -1 then goto,overplots
endfor
x = fltarr(n_elements(parameter),n_elements(kp_data[kp_start_index:kp_end_index].spacecraft.altitude))
y = kp_data[kp_start_index:kp_end_index].spacecraft.altitude
x_axis_title = strarr(n_elements(parameter))
for i=0,n_elements(parameter)-1 do begin
MVN_KP_TAG_VERIFY, kp_data, parameter[i],base_tag_count, first_level_count, base_tags, $
first_level_tags, check, level0_index, level1_index, tag_array
if check eq 1 then begin
print,'Whoops, ',strupcase(parameter[i]),' is not part of the KP data structure. Check the spelling, or the structure tags with the /LIST keyword.'
goto,finish
endif else begin
x[i,*] = kp_data[kp_start_index:kp_end_index].(level0_index).(level1_index)
y = kp_data[kp_start_index:kp_end_index].spacecraft.altitude
x_axis_title[i] = strupcase(string(tag_array[0]+'.'+tag_array[1]))
endelse
endfor
endif
endif
temp_yrange = dblarr(2,n_elements(parameter))
if n_elements(yrange) ne 0 then begin
temp_yrange = yrange
endif else begin
for i=0,n_elements(parameter)-1 do begin
temp_yrange[0,i] = min(y[*])
temp_yrange[1,i] = max(y[*])
endfor
endelse
temp_xrange = dblarr(2,n_elements(parameter))
if n_elements(xrange) ne 0 then begin
temp_xrange = xrange
endif else begin
for i=0,n_elements(parameter)-1 do begin
temp_xrange[0,i] = min(x[i,*])
temp_xrange[1,i] = max(x[i,*])
endfor
endelse
if directgraphic eq 0 then begin
if n_elements(parameter) gt 1 then begin
w = window(window_title='Maven KP Data Altitude Plots')
for i = 0, n_elements(parameter) -1 do begin
plot1 = plot(x[i,*], y, ytitle='Spacecraft Altitude, km', xtitle=x_axis_title[i], layout=[n_elements(parameter),1,i+1],/current,$
title=title[i],thick=thick,linestyle=linestyle,symbol=symbol,xlog=xaxis_log,xstyle=1,ystyle=1,yrange=temp_yrange[*,i],$
xrange=temp_xrange[*,i])
endfor
endif
endif
if directgraphic ne 0 then begin
device,decomposed=0
loadct,0,/silent
if n_elements(parameter) gt 1 then begin
!P.MULTI = [0, n_elements(parameter), 1]
plot,x[0,*],y,ytitle='Spacecraft Altitude, km', xtitle=x_axis_title[0],xstyle=1,ystyle=1,$
title=title[0],thick=thick,linestyle=linestyle,xlog=xaxis_log,background=255,color=0,charsize=2,font=-1,$
yrange=temp_yrange[*,0],xrange=temp_xrange[*,0]
for i=1,n_elements(parameter)-1 do begin
plot,x[i,*],y,ytitle='Spacecraft Altitude, km', xtitle=x_axis_title[i],xstyle=1,ystyle=1,$
title=title[i],thick=thick,linestyle=linestyle,xlog=xaxis_log,color=0,charsize=2,font=-1,$
yrange=temp_yrange[*,i],xrange=temp_xrange[*,i]
endfor
endif
endif
return
overplots:
plot_count =intarr(n_elements(parameter))
total_lines = 0
true_index = intarr(50)
for i=0, n_elements(parameter)-1 do begin
check = strmatch(parameter[i],'*,*')
if check eq 1 then begin
extract = strmid(strsplit(parameter[i],',',/extract) ,0,1)
new_param = strsplit(parameter[i],',',/extract)
for j=0,n_elements(extract)-1 do begin
if strmatch(extract[j],'[0123456789]') eq 1 then begin
true_index[total_lines] = fix(new_param[j])
endif else begin
mvn_kp_structure_index, kp_data, new_param[j], new_index, first_level_tags
true_index[total_lines] = new_index
endelse
total_lines = total_lines+1
plot_count[i] = plot_count[i]+1
endfor
endif else begin
extract = strmid(parameter[i],0,1)
new_param = strsplit(parameter[i],',',/extract)
if strmatch(extract,'[0123456789]') eq 1 then begin
true_index[total_lines] = fix(parameter[i])
endif else begin
mvn_kp_structure_index, kp_data, new_param, new_index, first_level_tags
true_index[total_lines] = new_index
endelse
total_lines = total_lines + 1
plot_count[i] = 1
endelse
endfor
true_index = true_index[0:total_lines-1]
x = fltarr(n_elements(true_index),n_elements(kp_data[kp_start_index:kp_end_index].spacecraft.altitude))
y = kp_data[kp_start_index:kp_end_index].spacecraft.altitude
x_axis_title = strarr(n_elements(true_index))
for i=0,n_elements(true_index)-1 do begin
MVN_KP_TAG_VERIFY, kp_data, true_index[i],base_tag_count, first_level_count, base_tags, $
first_level_tags, check, level0_index, level1_index, tag_array
if check eq 1 then begin
print,'Whoops, ',strupcase(true_index[i]),' is not part of the KP data structure. Check the spelling, or the structure tags with the /LIST keyword.'
goto,finish
endif else begin
x[i,*] = kp_data[kp_start_index:kp_end_index].(level0_index).(level1_index)
y = kp_data[kp_start_index:kp_end_index].spacecraft.altitude
x_axis_title[i] = strupcase(string(tag_array[0]+'.'+tag_array[1]))
endelse
endfor
temp_yrange = dblarr(2,n_elements(true_index))
if n_elements(yrange) ne 0 then begin
temp_yrange = yrange
endif else begin
for i=0,n_elements(true_index)-1 do begin
temp_yrange[0,i] = min(y)
temp_yrange[1,i] = max(y)
endfor
endelse
temp_xrange = dblarr(2,n_elements(true_index))
if n_elements(xrange) ne 0 then begin
temp_xrange = xrange
endif else begin
for i=0,n_elements(true_index)-1 do begin
temp_xrange[0,i] = min(x[i,*])
temp_xrange[1,i] = max(x[i,*])
endfor
endelse
if directgraphic eq 0 then begin
oplot_index = 0
w = window(window_title='Maven KP Data Altitude Plots')
for i = 0, n_elements(parameter) -1 do begin
if plot_count[i] eq 1 then begin
plot1 = plot(x[oplot_index,*], y, ytitle='Spacecraft Altitude, km', xtitle=x_axis_title[oplot_index], layout=[n_elements(parameter),1,i+1],/current,$
title=title[i],thick=thick,linestyle=linestyle,symbol=symbol,xlog=xaxis_log,xstyle=1,ystyle=1,xrange=temp_xrange[*,oplot_index],$
yrange=temp_yrange[*,oplot_index])
oplot_index= oplot_index+1
endif else begin
plot1 = plot(x[oplot_index,*], y, ytitle='Spacecraft Altitude, km', layout=[n_elements(parameter),1,i+1],/current,$
title=title[i],thick=thick,linestyle=0,symbol=symbol,xlog=xaxis_log,xrange=temp_xrange[*,oplot_index],xstyle=1,ystyle=1,$
yrange=temp_yrange[*,oplot_index],name=x_axis_title[oplot_index])
l = legend(target=plot1,position=[(i*(1./n_elements(parameter)))+(.5/(n_elements(parameter))),.85],$
/normal,linestyle=0,font_size=8)
oplot_index = oplot_index+1
hold_index = oplot_index-1
for j=1,plot_count[i]-1 do begin
plot1 = plot(x[oplot_index,*], y, ytitle='Spacecraft Altitude, km', layout=[n_elements(parameter),1,i+1],/current,$
title=title[i],thick=thick,linestyle=j,symbol=symbol,xlog=xaxis_log,xstyle=1,ystyle=1,xrange=temp_xrange[*,hold_index],$
name=x_axis_title[oplot_index], yrange=temp_yrange[*,hold_index])
l = legend(target=plot1,position=[(i*(1./n_elements(parameter)))+(.5/(n_elements(parameter))),.85+(j*0.05)],$
/normal,linestyle=j,font_size=8)
oplot_index=oplot_index+1
endfor
endelse
endfor
endif
if directgraphic eq 1 then begin
device,decomposed=1
!P.MULTI = [0, n_elements(parameter), 1]
oplot_index = 0
for i = 0, n_elements(parameter) -1 do begin
if plot_count[i] eq 1 then begin
plot,x[oplot_index,*],y,ytitle='Spacecraft Altitude, km', xtitle=x_axis_title[oplot_index],$
title=title[i],thick=thick,linestyle=linestyle,xlog=xaxis_log,background='FFFFFF'x,color=0,$
font=-1,xstyle=1,ystyle=1,xrange=temp_xrange[*,oplot_index],yrange=temp_yrange[*,oplot_index]
oplot_index = oplot_index+1
endif else begin
plot,x[oplot_index,*],y,ytitle='Spacecraft Altitude, km',$
title=title[oplot_index],thick=thick,linestyle=linestyle,xlog=xaxis_log,background='FFFFFF'x,$
color=0,xstyle=1,ystyle=1 ,xrange=temp_xrange[*,oplot_index],yrange=temp_yrange[*,oplot_index]
plots,[(i*(1./n_elements(parameter)))+(.25/(n_elements(parameter))),(i*(1./n_elements(parameter)))+(.48/(n_elements(parameter)))],[.81,.81],linestyle=0,color=0,/normal
xyouts,(i*(1./n_elements(parameter)))+(.5/(n_elements(parameter))),.8,x_axis_title[oplot_index],color=0,/normal
oplot_index = oplot_index+1
for j=1,plot_count[i]-1 do begin
oplot,x[oplot_index,*],y,linestyle=j,thick=thick,color=0
plots,[(i*(1./n_elements(parameter)))+(.25/(n_elements(parameter))),(i*(1./n_elements(parameter)))+(.48/(n_elements(parameter)))],[.81+(j*0.03),.81+(j*0.03)],linestyle=j,color=0,/normal
xyouts,(i*(1./n_elements(parameter)))+(.5/(n_elements(parameter))),.8+(j*.03),x_axis_title[oplot_index],color=0,/normal
oplot_index=oplot_index+1
endfor
endelse
endfor
endif
finish:
end