2012-10-03 23 views
5

Tak naprawdę nie próbowałem tego zrobić, ale zastanawiam się, czy istnieje sposób scalenia dwóch działek, które już istnieją, w jeden wykres. Wszelkie dane wejściowe będą bardzo mile widziane!Scalanie dwóch istniejących działek w jedną działkę

+0

Co kreślenia biblioteki używasz? Jaki rodzaj działek? Podaj więcej szczegółów. – Gareth

+0

@ Gareth Biblioteka najprawdopodobniej będzie matplotlib, a dwa wykresy, o których mowa, będą miały regularne wykresy liniowe, a także histogramy. Wyglądają podobnie i mają te same osie, chociaż mają osobne zakresy dat na osi X. – user1620716

+0

Czy chcesz scalić _data_ dwóch już istniejących działek? Powiedz linię działki na czerwono, a drugą na niebiesko - jako przykład chciałbyś zobaczyć nowy wykres na zielono dwóch zestawów danych? (Zakładamy z jakiegoś dziwnego powodu, że nie masz dostępu do oryginalnych danych?) – Hooked

Odpowiedz

3

Powyżej znajduje się pełna minimalny przykład pracy, która przechodzi przez wszystkie etapy, które trzeba wyodrębnić i połączyć dane z wielu wykresów.

import numpy as np 
import pylab as plt 

# Create some test data 
secret_data_X1 = np.linspace(0,1,100) 
secret_data_Y1 = secret_data_X1**2 
secret_data_X2 = np.linspace(1,2,100) 
secret_data_Y2 = secret_data_X2**2 

# Show the secret data 
plt.subplot(2,1,1) 
plt.plot(secret_data_X1,secret_data_Y1,'r') 
plt.plot(secret_data_X2,secret_data_Y2,'b') 

# Loop through the plots created and find the x,y values 
X,Y = [], [] 
for lines in plt.gca().get_lines(): 
    for x,y in lines.get_xydata(): 
     X.append(x) 
     Y.append(y) 

# If you are doing a line plot, we don't know if the x values are 
# sequential, we sort based off the x-values 
idx = np.argsort(X) 
X = np.array(X)[idx] 
Y = np.array(Y)[idx] 

plt.subplot(2,1,2) 
plt.plot(X,Y,'g') 
plt.show() 

enter image description here

+0

To prawie dokładnie to, czego szukam! Zamierzam spróbować. – user1620716

1

Zakładając, że używasz matplotlib, można uzyskać dane dla figury jako tablica NX2 numpy tak:

gca().get_lines()[n].get_xydata()