2012-01-24 10 views

risposta

9

Date un'occhiata al Transformations tutorial (wow, che ha preso un sacco di scavare per trovare -!)

In particolare, coordinate axes.transData.transform(points) rendimenti di pixel dove (0,0) è in basso a sinistra della finestra .

import matplotlib.pyplot as plt 

# set up a figure 
fig = plt.figure() 
ax = fig.add_subplot(111) 
x = np.arange(0, 10, 0.005) 
y = np.exp(-x/2.) * np.sin(2*np.pi*x) 
ax.plot(x,y) 

# what's one vertical unit & one horizontal unit in pixels? 
ax.transData.transform([(0,1),(1,0)])-ax.transData.transform((0,0)) 
# Returns: 
# array([[ 0., 384.], <-- one y unit is 384 pixels (on my computer) 
#  [ 496., 0.]]) <-- one x unit is 496 pixels. 

ci sono varie altre trasformate si può fare - coordinate relative ai dati, rispetto agli assi, in proporzione della figura, o in pixel per la figura (il trasformazioni tutorial è veramente buono).

per la conversione tra pixel e punti (un punto è 1/72 pollici), si può essere in grado di giocare con matplotlib.transforms.ScaledTransform e fig.dpi_scale_trans (il tutorial ha qualcosa su questo, credo).

+0

Perfetto; Grazie! – aresnick

Problemi correlati