2010-11-17 16 views
47

3 eksenli ivmeölçer zaman serisi verilerinin (t, x, y, z) ayrı alt yazılarda yer almasını istiyorum. Yani, bir arsa üzerinde "Dikdörtgene Yakınlaştır" aracını kullandığımda, fareyi serbest bıraktığımda, tüm 3 parselleri birbirine yakınlaştırırım.Matplotlib/Pyplot: Alt pikselleri nasıl yakınlaştırırsınız?

Daha önce, tüm 3 eksenleri farklı renkler kullanarak tek bir grafik üzerinde çizdim. Fakat bu sadece küçük miktarlarda veri ile faydalıdır: 2 milyondan fazla veri noktam var, böylece çizilen son eksen diğer ikisini de gizliyor. Bu nedenle ayrı alt konular için ihtiyaç.

Matplotlib/pyplot fare olaylarını (http://matplotlib.sourceforge.net/users/event_handling.html) yakalayabildiğimi biliyorum ve diğer olayları yakalayabildiğimi biliyorum (http://matplotlib.sourceforge.net /api/backend_bases_api.html#matplotlib.backend_bases.ResizeEvent), ancak herhangi bir altpipte hangi yakınlaştırmanın istenildiğini ve diğer iki altbölümde nasıl çoğaltılacağını bilmiyorum.

Ben bütün parçaları var şüpheli ve yalnızca bu son değerli ipucu ...

-BobC

cevap

75

Bunu yapmanın en kolay yolu sharex ve/veya sharey anahtar kelimeler kullanmaktır gerek eksenlerini oluştururken:

from matplotlib import pyplot as plt 

ax1 = plt.subplot(2,1,1) 
ax1.plot(...) 
ax2 = plt.subplot(2,1,2, sharex=ax1) 
ax2.plot(...) 
+4

10 Bunun basit olacağını düşündüm, ama bu kadar basit değil. Teşekkürler! – BobC

+0

Sorunumu çok kanallı zaman dizileriyle de çözdüm! Harika! – heltonbiker

-1

etkileşimli bu ayrı eksenler üzerinde çalışır

for ax in fig.axes: 
    ax.set_xlim(0, 50) 
fig.draw() 
2

Bunu, stiliniz buysa plt.subplots ile de yapabilirsiniz.

fig, ax = plt.subplots(3, 1, sharex=True, sharey=True) 
İlgili konular