2012-08-22 16 views
6

İnternette uzun zamandır bakıyorum ama nasıl yapılacağını anlayamadım. Ben xticks numpy.arange (1, N), N her şekil için farklı olarak tanımlanmış birkaç figür çizmek gerekir. Xticks arasındaki mesafenin tüm şekiller üzerinde aynı olmasını (örneğin 1 cm), yani her şeklin genişliğinin numpy.arange (1, N) boyutuna bağlı olmasını istiyorum. Bunu nasıl yapacağın hakkında bir fikrin var mı?Matplotlib - xticks arasındaki mesafeyi (mm/cm/puan ... olarak ayarla)

cevap

2

Sana (şeklin bir kısmı gibi) eksenleri boyutta dikkatli kontrolü bir kombinasyonu, ax.set_xlim ve fig.set_size_inches(doc) şeklin gerçek boyutunu ayarlamak için bunu yapabilirsiniz düşünüyorum.

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

@ tcaswell cevabı üzerine genişletmek için eski, burada benim eksenin ve keneler arası mesafenin gerçek boyutunu mikro yönetmek istediğim zaman böyle yaparız.

enter image description here

:

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') 

Bu, her kene arasında 1 cm boşlukla 10 cm x ekseni ile 11.8 cm arasında bir rakam ile sonuçlanır

İlgili konular