Chcę ustawić markersize
równą wysokości pojedynczego urządzenia. Wygląda na to, że markersize
jest w pikselach. Jak mogę uzyskać, jak duży "1 element" (wzdłuż danej osi) jest w pikselach?Jak mogę uzyskać długość pojedynczej jednostki na osi w matplotlib, w pikselach?
Odpowiedz
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ę).
Perfect; dzięki! – aresnick
Podobnie, ale nie duplikat: http://stackoverflow.com/questions/5893513/plot-circles-with-alpha-values-in-matlab może się okazać, że jest to przydatne. – Alex