2012-01-24 28 views
10

Tôi muốn tạo markersize bằng một đơn vị chiều cao. Có vẻ như markersize bằng pixel. Làm thế nào tôi có thể nhận được như thế nào lớn "1 đơn vị" (dọc theo một trục nhất định) là, tính bằng pixel?Làm cách nào để lấy độ dài của một đơn vị trên trục trong matplotlib, tính bằng pixel?

+0

Giống như, nhưng không trùng lặp với: http://stackoverflow.com/questions/5893513/plot-circles-with-alpha-values-in-matlab bạn có thể thấy hữu ích. – Alex

Trả lời

9

Có một cái nhìn tại Transformations tutorial (wow, đó mất rất nhiều cỗ máy tìm -!)

Đặc biệt, lợi nhuận axes.transData.transform(points) điểm ảnh tọa độ nơi (0,0) là phía dưới bên trái của khung nhìn .

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. 

Có nhiều khác biến bạn có thể làm - tọa độ tương ứng với dữ liệu của bạn, liên quan đến các trục, như một phần của hình, hoặc bằng pixel cho con số (biến đổi hướng dẫn thực sự tốt).

để chuyển đổi giữa pixelđiểm (một điểm là 1/72 inch), bạn có thể chơi xung quanh với matplotlib.transforms.ScaledTransformfig.dpi_scale_trans (hướng dẫn có một cái gì đó về vấn đề này, tôi nghĩ).

+0

Hoàn hảo; cảm ơn! – aresnick

Các vấn đề liên quan