¿Por qué IDL agrega sus propias marcas de tick a mis marcas de tick de trama personalizadas?

StackOverflow https://stackoverflow.com/questions/3426091

Pregunta

Estoy tratando de especificar las marcas de tick de eje Y personalizadas, pero IDL no está cooperando.

enter image description here

En la parte superior izquierda, 1.0000 debería ser el valor máximo, pero IDL pone un 57 allí. 57 es la dimensión de matriz máxima de mis datos.

Tengo una variedad de niveles de ETA (cadenas) correspondientes 1: 1 con los índices de matriz, y quiero usarlos como marcas de tick. Tengo un poco de código que le deja trazar las marcas de ticks principales, pero IDL sigue lanzando ese valor de índice de matriz Silly Max en lugar de mi marca final deseada.

¿Hay alguna manera de deshacerme de eso?

Según lo solicitado, aquí está el código:

;Get the total number of possible y axis values( this case has 58 )
number_of_ticks = (size( custom_levels[ min_level:max_level ] ) )[1]

;I want 6 major tick marks
number_of_major_ticks = 6

;The amount in between each tick in terms of array index
tick_step = number_of_ticks / number_of_major_ticks

;Check if we can fit another tick mark in
if ((((number_of_major_ticks - 1)+min_level) * tick_step) + tick_step) LT number_of_ticks then begin
   number_of_major_ticks = number_of_major_ticks + 1
endif

;Get the array positions of the values that will be used for tick marks
tick_array_indices = indgen( number_of_major_ticks )    
tick_array_indices = (tick_array_indices+min_level) * tick_step

;Now build the array of tick mark strings that should be displayed
y_tick_labels = strarr( number_of_major_ticks + 1 )

for i = 0, number_of_major_ticks - 1 do begin
   y_tick_labels[i] = custom_levels[ tick_array_indices[ i ] ]
endfor

;That's all the initial setup, now to actually plot the data:
if overplot EQ 1 then begin 
  CASE contour_type OF
    'Solid Line':contour, var_slice, /overplot, levels = var_levels, /FOLLOW, Color = 0, YSTYLE = 1, XSTYLE = 1, XRANGE = [0, n_points ], YRANGE = [ min_level, max_level ]
    'Dashed Line':contour, var_slice, /overplot, levels = var_levels, /FOLLOW,  C_LINESTYLE = [1], C_COLOR = 0, Color = 0, YSTYLE = 1, XSTYLE = 1, YRANGE = [ min_level, max_level ], XRANGE = [0, n_points ]  
  endcase
endif else begin
  CASE contour_type OF
    'Fill':contour, var_slice, /Fill, C_COLORS=var_colors, Background = 16777215, levels=var_levels, POSITION=[0.1, 0.25, 0.9, 0.95], /NORMAL, Color = 0, Title = 'Cross section plot between coordinates ' +  strtrim(lat[x1, y1],2) + ',' + strtrim(lon[x1, y1],2) + ' and ' + strtrim(lat[x2, y2],2) + ',' + strtrim(lon[x2, y2],2), YTICKS = number_of_major_ticks, YTICKNAME =  y_tick_labels, YTITLE = custom_levels_title, XTITLE = 'Points in between the 2 chosen coordinates', CHARSIZE = 1.2, YSTYLE = 1, XSTYLE = 1, YRANGE = [ min_level, max_level ], XRANGE = [0, n_points ]
    'Solid Line':contour, var_slice, Background = 16777215, levels=var_levels, POSITION=[0.1, 0.25, 0.9, 0.95], Color = 0, Title = 'Cross section plot between coordinates ' +  strtrim(lat[x1, y1],2) + ',' + strtrim(lon[x1, y1],2) + ' and ' + strtrim(lat[x2, y2],2) + ',' + strtrim(lon[x2, y2],2), YTICKS = number_of_major_ticks, YTICKNAME =  y_tick_labels, YTITLE = custom_levels_title, XTITLE = 'Points in between the 2 chosen coordinates', CHARSIZE = 1.2, YSTYLE = 1, XSTYLE = 1, YRANGE = [ min_level, max_level ], XRANGE = [0, n_points ]
    'Dashed Line':contour, var_slice, Background = 16777215, levels=var_levels,C_LINESTYLE = [1], C_COLOR = 0, POSITION=[0.1, 0.25, 0.9, 0.95], Color = 0, Title = 'Cross section plot between coordinates ' +  strtrim(lat[x1, y1],2) + ',' + strtrim(lon[x1, y1],2) + ' and ' + strtrim(lat[x2, y2],2) + ',' + strtrim(lon[x2, y2],2), YTICKS = number_of_major_ticks, YTICKNAME =  y_tick_labels, YTITLE = custom_levels_title, XTITLE = 'Points in between the 2 chosen coordinates', CHARSIZE = 1.2, YSTYLE = 1, XSTYLE = 1, YRANGE = [ min_level, max_level ], XRANGE = [0, n_points ]           
  endcase  
endelse    

El estuche de relleno es el que se está utilizando en este momento. VAR_SLICE es una matriz de 450x58 en este caso.

¿Fue útil?

Solución

Woops, lo descubrió.

IDL parece requerir que especifique una serie de marcas de verificación 1 menos que las etiquetas que le da.

Entonces, si desea 11 marcas de tick y tiene 11 etiquetas para sus marcas de tick, establezca el número de marcas importantes en 10 en 10.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top