簡體   English   中英

疊加圖並獨立滾動matplotlib

[英]Overlay plots and scroll independently matplotlib

我的問題可以描述如下:兩個不同的數據集有兩個不同的x和y軸(讓我們稱之為t1,y1,t2和y2),t1和t2可以是相同的。

我需要做的是將兩個圖重疊/繪制在一起(即,不在子圖中,或在相同大小的子圖中並且彼此完全重疊)並且能夠獨立地滾動每個軸。 我的目標是能夠直觀地排列它們,我可以比較它們。

我沒有的是以下內容:

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

這是從這個stackoverflow帖子中獲取的

基本上我需要做的(我認為)是在同一個圖上有兩個軸,完全重疊,並有兩個滾動條。

任何幫助是極大的贊賞。

對不起任何英語錯誤,ESL

這是一個基本的例子,我可以使用兩個隨機數據集,您可以在同一個圖上獨立地改變兩個數據集的x軸位置。

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

這導致以下結果: 在此輸入圖像描述

您可能需要更改update功能以適合您的實際數據(我的不同於OP中列出的數據)。

如果您對具有相同的x軸值感興趣但想要獨立地改變每個圖的y軸位置,則可以使用ax2 = ax1.twiny()並相應地更改更新函數(類似於ax1.axis([xmin, xmax, pos, pos+2]) )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM