2012-01-24 3 views

Odpowiedz

9

Wystarczy popatrzeć na Transformations tutorial (wow, to było dużo kopania znaleźć! -)

W szczególności koordynuje axes.transData.transform(points) powraca piksel, gdzie (0,0) jest lewym dolnym rogu rzutni .

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. 

Istnieją różne inne przemienia można zrobić - współrzędne w stosunku do swoich danych, w stosunku do osi, jako część rysunku, lub w pikselach na rysunku (samouczek przemiany jest bardzo dobra).

do konwersji między pikseli i punktów (punkt to 1/72 cala), może być w stanie bawić się z matplotlib.transforms.ScaledTransform i fig.dpi_scale_trans (samouczek ma coś na ten temat, jak sądzę).

+0

Perfect; dzięki! – aresnick