2012-10-16 20 views
17

İkincil bir y ekseni içeren birden çok alt noktaya sahipseniz (ikizx kullanılarak oluşturulan), bu ikinci y eksenini alt pikseller arasında nasıl paylaşabilirsiniz? Onları otomatik olarak eşit bir şekilde ölçeklendirmelerini istiyorum (böylece y sınırlarını daha sonra elle ayarlamayın). Birincil y ekseni için, sharey anahtar kelimesini subplot numaralı çağrıyla kullanabilirsiniz. Örneğin Aşağıdaİkincil y eksenini matplotlib'deki alt pikseller arasında nasıl paylaşılır?

benim girişimi gösterir, ancak her iki subplots ikincil y eksenini paylaşmak için başarısız olur. Ben Matplotlib/PyLab kullanıyorum:

ax = [] 

#create upper subplot 
ax.append(subplot(211)) 
plot(rand(1) * rand(10),'r') 

#create plot on secondary y-axis of upper subplot 
ax.append(ax[0].twinx()) 
plot(10*rand(1) * rand(10),'b') 

#create lower subplot and share y-axis with primary y-axis of upper subplot 
ax.append(subplot(212, sharey = ax[0])) 
plot(3*rand(1) * rand(10),'g') 

#create plot on secondary y-axis of lower subplot 
ax.append(ax[2].twinx()) 
#set twinxed axes as the current axes again, 
#but now attempt to share the secondary y-axis 
axes(ax[3], sharey = ax[1]) 
plot(10*rand(1) * rand(10),'y') 

Bu bana böyle bir şey olur:

Example of two subplots with failed sharing of secondary y-axis

ben eksenlerini kullanılan sebebi() işlevi paylaşılan y ekseni olmasıdır ayarlamak için twinx, sharey anahtar sözcüğünü kabul etmez. Win7 x64 üzerinde Python 3.2 kullanılarak

bi'şey. Matplotlib sürümü 1.2.0rc2'dir.

cevap

30

Öyle gibi Axes.get_shared_y_axes() kullanabilirsiniz: Burada

from numpy.random import rand 
import matplotlib 
matplotlib.use('gtkagg') 
import matplotlib.pyplot as plt 

# create all axes we need 
ax0 = plt.subplot(211) 
ax1 = ax0.twinx() 
ax2 = plt.subplot(212) 
ax3 = ax2.twinx() 

# share the secondary axes 
ax1.get_shared_y_axes().join(ax1, ax3) 

ax0.plot(rand(1) * rand(10),'r') 
ax1.plot(10*rand(1) * rand(10),'b') 
ax2.plot(3*rand(1) * rand(10),'g') 
ax3.plot(10*rand(1) * rand(10),'y') 
plt.show() 

sadece birlikte ikincil eksenlerini birleştiren ediyoruz.

Bu yardımcı olur umarım.

+0

Evet, bu bana daha da yardımcı oldu, teşekkürler. Ayrıca birincil y-eksenlerine katıldım, böylece ortak bir y eksenine sahip olacaklar. – Puggie

+0

Sevindim Yardımcı olabilirim. İnternet noktaları için teşekkürler. – dmcdougall

+1

Bu işe yaramaz, ikinci ikiz ölçek güncellenir, ancak ikinci ikiz arsa kalıyordu. – Mattia

İlgili konular