instalar - plot() python
¿Cómo convierto(o escala) los valores de los ejes y redefino la frecuencia de tic en matplotlib? (1)
Parece que estás lidiando con la interfaz matplotlib.pyplot
, lo que significa que podrás omitir la mayoría de los tratos con artistas, ejes y similares. Puede controlar los valores y las etiquetas de las marcas de verificación utilizando el comando matplotlib.pyplot.xticks
, de la siguiente manera:
tick_locs = [list of locations where you want your tick marks placed]
tick_lbls = [list of corresponding labels for each of the tick marks]
plt.xticks(tick_locs, tick_lbls)
Para su ejemplo en particular, tendrá que calcular cuáles son las marcas de verificación relativas a las unidades (es decir, los píxeles) de su gráfico original (ya que está usando imshow
). Sin imshow
, dijo que sabe cómo hacerlo.
No he tratado mucho con las imágenes, pero es posible que pueda utilizar un método de trazado diferente (por ejemplo, pcolor
) que le permita suministrar información de x
e y
. Eso puede darle algunas opciones más para especificar las unidades de su imagen.
Para los tutoriales, harías bien en buscar en la galería de matplotlib : encuentra algo que te guste y lee el código que lo produjo. Uno de los chicos de nuestra oficina compró recientemente un libro sobre visualización de Python , que quizás valga la pena ver.
La forma en que generalmente pienso en todas las piezas es la siguiente:
- Una
Figure
es un contenedor para todos losAxes
- Un
Axes
es el espacio donde realmente se dibuja lo que dibuja (es decir, su parcela) - Un
Axis
es elAxis
x
ey
real. - ¿Artistas? Para mí, eso es demasiado profundo en la interfaz: nunca tuve que preocuparme por eso, aunque rara vez utilizo el módulo
pyplot
en las parcelas de producción.
Estoy mostrando una imagen jpg (si la hago girar 90 grados, si es relevante) y, por supuesto, los ejes muestran las coordenadas de los píxeles. Me gustaría convertir el eje para que, en lugar de mostrar el número de píxeles, muestre mi unidad de elección, ya sean radianes, grados o, en mi caso, una coordenada astronómica. Sé que la conversión de píxel a (por ejemplo) grado. Aquí hay un fragmento de cómo se ve mi código actualmente:
import matplotlib.pyplot as plt
import Image
import matplotlib
thumb = Image.open(self.image)
thumb = thumb.rotate(90)
dpi = plt.rcParams[''figure.dpi'']
figsize = thumb.size[0]/dpi, thumb.size[1]/dpi
fig = plt.figure(figsize=figsize)
plt.imshow(thumb, origin=''lower'',aspect=''equal'')
plt.show()
... así que, a partir de esto, ¿puedo tomar cada valor que matplotlib imprimiría en el eje, y cambiarlo / reemplazarlo con una cadena para que salga? Me gustaría hacer esto para un formato de coordenadas específico; por ejemplo, en lugar de un ángulo de 10.44 (grados), me gustaría que lea 10 26 ''24'' ''(es decir, grados, arcmins, arcsecs)
Finalmente, sobre este tema, quisiera controlar la frecuencia de tic, en la trama. Matplotlib puede imprimir el valor del eje cada 50 píxeles, pero realmente lo quiero cada grado (por ejemplo).
Parece que me gustaría definir algún tipo de matriz con los valores de píxel y sus valores convertidos (grados, etc.) que quiero que se muestren, teniendo control sobre la frecuencia de muestreo en el rango de rango xmin / xmax.
¿Hay expertos matplotlib en desbordamiento de pila? Si es así, muchas gracias de antemano por su ayuda! Para hacer que esto sea una experiencia de aprendizaje más, realmente agradecería que me instigaran en la dirección de tutoriales, etc. sobre este tipo de problema de matplotlib. ¡Me he encontrado muy confundido con ejes, ejes, figuras, artistas, etc.!
Aclamaciones,
Dave