2012-08-22 29 views
6

Tôi đã tìm kiếm trên internet trong một thời gian dài nhưng không thể tìm ra cách để thực hiện nó. Tôi cần phải vẽ một số con số có xticks được định nghĩa là numpy.arange (1, N), N là khác nhau cho mỗi con số. Tôi muốn khoảng cách giữa các xticks giống nhau trên tất cả các số liệu (ví dụ 1 cm), nghĩa là chiều rộng của mỗi hình phải phụ thuộc vào kích thước của numpy.arange (1, N). Bất kỳ ý tưởng làm thế nào để làm điều đó?Matplotlib - Cách đặt khoảng cách (tính bằng mm/cm/điểm ...) giữa các xticks

Trả lời

2

Tôi nghĩ bạn có thể làm điều này với sự kết hợp kiểm soát cẩn thận kích thước trục của bạn (như một phần nhỏ của hình), ax.set_xlimfig.set_size_inches(doc) để đặt kích thước thực của hình.

fig = plt.figure() 
ax = fig.add_axes([0,0,1,1]) 
ax.set_xlim([0,N]) 
fig.set_size_inches([N/2.54,h]) 
0

Để mở rộng khi câu trả lời @ tcaswell của, đây là cách tôi làm điều đó khi tôi muốn vi quản lý kích thước thực sự của trục của tôi và của ve liên khoảng cách.

import numpy as np 
import matplotlib.pyplot as plt 

plt.close('all') 

#------------------------------------------------------ define xticks setup ---- 

xticks_pos = np.arange(11) # xticks relative position in xaxis 
N = np.max(xticks_pos) - np.min(xticks_pos) # numbers of space between ticks 
dx = 1/2.54 # fixed space between xticks in inches 
xaxis_length = N * dx 

#------------------------------------------------------------ create figure ---- 

#---- define margins size in inches ---- 

left_margin = 0.5 
right_margin = 0.2 
bottom_margin = 0.5 
top_margin = 0.25 

#--- calculate total figure size in inches ---- 

fwidth = left_margin + right_margin + xaxis_length 
fheight = 3 

fig = plt.figure(figsize=(fwidth, fheight)) 
fig.patch.set_facecolor('white') 

#---------------------------------------------------------------- create axe---- 

#---- axes relative size ---- 

axw = 1 - (left_margin + right_margin)/fwidth 
axh = 1 - (bottom_margin + top_margin)/fheight 

x0 = left_margin/fwidth 
y0 = bottom_margin/fheight 

ax0 = fig.add_axes([x0, y0, axw, axh], frameon=True) 

#---------------------------------------------------------------- set xticks---- 

ax0.set_xticks(xticks_pos) 

plt.show(block=False) 
fig.savefig('axis_ticks_cm.png') 

Điều này dẫn đến một con số 11,8 cm với một Xaxis 10 cm với 1cm không gian giữa mỗi ve:

enter image description here

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