2016-05-26 13 views
3

問題は次のように記述できます。 2つの異なるx軸とy軸を持つ2つの異なるデータセット(t1、y1、t2、およびy2を呼び出すことができます)、t1とt2は同じ。オーバーレイプロットとスクロールを独立してmatplotlib

私がする必要があるのは、両方のプロットを重ね合わせてプロットすることです(つまり、サブプロットや同じサイズで正確に重なり合うサブプロットではない)、それぞれの軸を個別にスクロールすることができます。私の目標は、それらを視覚的に並べて比較できるようにすることです。

私がいないまで持っていることは以下の通りです:基本的に私はとして、完全にオーバーラップする二つの軸を有することがある(と思う)何をする必要があるかthis stackoverflow post

から取られた

import numpy as np 
from matplotlib import pyplot as plt 
from matplotlib.widgets import Slider 
dArray = np.genfromtxt("t5_24.csv",delimiter=','); 
y1 = dArray[:,2]; 
y2 = dArray[:,3]; 
fig, ax = plt.subplots() 
plt.subplots_adjust(bottom=0.25) 
t = np.linspace(0,len(temp1),len(temp1)) 
p1 = plt.plot(t,y1,t,y2) 


axcolor = 'lightgoldenrodyellow' 
axpos = plt.axes([0.2, 0.1, 0.65, 0.03], axisbg=axcolor) 

spos = Slider(axpos, 'Pos', 0.1, len(t)) 

def update(val): 
    pos = spos.val 
# ax.xlim(pos,pos+30*60) 
    ax.axis([pos,pos+120*60,0,500]) 
    fig.canvas.draw_idle() 

spos.on_changed(update) 

plt.show() 

2つのスクロールバー、同じ図の上に。

ご協力いただきまして誠にありがとうございます。

任意の英語のミスのため申し訳ありませんが、ESL

答えて

3

は、ここで私はあなたが同じプロット上で独立して2つのデータセットのx軸の位置を変えることができる2つのランダムなデータセットで作業を得ることができ、基本的な例です。

import matplotlib.pyplot as plt 
from matplotlib.widgets import Slider 

t = np.linspace(0, 10, 101) 
y1, y2 = np.random.rand(2, 101) 

fig, ax1 = plt.subplots() 
ax2 = ax1.twiny() 

fig.subplots_adjust(bottom=0.25) 

ax1_pos = fig.add_axes([0.2, 0.1, 0.65, 0.03]) 
ax2_pos = fig.add_axes([0.2, 0.05, 0.65, 0.03]) 

s1 = Slider(ax1_pos, 'Pos1', 0.1, len(x)) 
s2 = Slider(ax2_pos, 'Pos2', 0.1, len(x)) 

def update1(v): 
    pos = s1.val 
    ax1.axis([pos,pos+2,0,1]) 
    fig.canvas.draw_idle() 

def update2(v): 
    pos = s2.val 
    ax2.axis([pos,pos+2,0,1]) 
    fig.canvas.draw_idle() 

s1.on_changed(update1) 
s2.on_changed(update2) 

ax1.plot(t, y1, 'b-') 
ax2.plot(t, y2, 'r-') 
plt.show() 

これは、次のような結果になります。 enter image description here

あなたはおそらく、あなたの実際のデータを合わせてupdateの機能を変更する必要があります(私はOPに記載されているものとは異なります)。

x軸の値が同じでも、各プロットのy軸の位置を個別に変更したい場合は、ax2 = ax1.twiny()を使用して、それに応じて更新機能を変更できます(ax1.axis([xmin, xmax, pos, pos+2])など)。

+0

ありがとうございます!私はここで数分でこれを試してみましょう、非常に感謝!私は 'twiny()'メソッドを読んでいるよ – robotHamster

+0

魅力的に働いた! 'twiny()'は、第2のスクロールバーの作成と更新機能の作成まで行っていましたが、どちらのSliderを使用しても、両方のプロットが動いていました。 ありがとう@wflynny – robotHamster

関連する問題