2012-10-03 24 views
5

Non ho davvero tentato in alcun modo di farlo, ma mi chiedo se esiste un modo per unire due grafici già esistenti in un grafico. Qualsiasi input sarebbe molto apprezzato!Unisci due grafici esistenti in un grafico

+0

Cosa biblioteca tramando stai usando? Che tipo di trame? Si prega di fornire maggiori dettagli. – Gareth

+0

@Gareth Probabilmente la libreria sarà matplotlib, e i due grafici in questione hanno ciascuno dei grafici a linee regolari, oltre agli istogrammi. Hanno un aspetto simile e hanno gli stessi assi, sebbene abbiano intervalli di date separati sull'asse x. – user1620716

+0

Vuoi unire _data_ di due grafici già esistenti? Dire un grafico a linee in rosso e un altro in blu: ad esempio, ti piacerebbe vedere un nuovo grafico in verde dei due set di dati? (Supponiamo per qualche strana ragione che non si abbia accesso ai dati originali corretti?) – Hooked

risposta

3

Ecco un esempio di lavoro minimo completo che passa attraverso tutti i passi necessari per estrarre e combinare i dati da più trame.

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

Questo è quasi esattamente quello che sto cercando! Ho intenzione di fare un tentativo. – user1620716

1

Supponendo che si sta utilizzando Matplotlib, è possibile ottenere i dati per una figura come una matrice NX2 NumPy in questo modo:

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