2012-10-03 10 views
5

No he intentado hacer esto de ninguna manera, pero me pregunto si hay una manera de unir dos trazados que ya existen en un gráfico. ¡Cualquier contribución será muy apreciada!Fusionar dos trazados existentes en una sola trama

+0

Lo biblioteca de trazado está usando? ¿Qué tipo de tramas? Por favor proporciona más detalles. – Gareth

+0

@Gareth La biblioteca probablemente sea matplotlib, y los dos gráficos en cuestión tienen gráficos de líneas regulares, así como histogramas. Se ven similares, y tienen los mismos ejes, aunque tienen intervalos de fechas separados en el eje x. – user1620716

+0

¿Desea fusionar _data_ de dos parcelas ya existentes? Digamos un gráfico de líneas en rojo y otro en azul: como ejemplo, ¿le gustaría ver un nuevo trazado en verde de los dos conjuntos de datos? (Estamos asumiendo por alguna extraña razón que no tiene acceso a los datos originales correctos?) – Hooked

Respuesta

3

Aquí es un ejemplo de trabajo mínima completo que pasa a través de todos los pasos que necesita para extraer y combina los datos de múltiples parcelas.

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

¡Esto es casi exactamente lo que estoy buscando! Voy a intentarlo. – user1620716

1

Suponiendo que está usando Matplotlib, puede obtener los datos para una figura como una matriz NX2 numpy así:

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