trazando múltiples regresiones lineales en la misma plot marina

Supongo que tengo lo siguiente:

x1 = np.random.randn(50) y1 = np.random.randn(50) * 100 x2 = np.random.randn(50) y2 = np.random.randn(50) * 100 df1 = pd.DataFrame({'x1':x1, 'y1': y1}) df2 = pd.DataFrame({'x2':x2, 'y2': y2}) sns.lmplot('x1', 'y1', df1, fit_reg=True, ci = None) sns.lmplot('x2', 'y2', df2, fit_reg=True, ci = None) 

Esto creará 2 plots separadas. ¿Cómo puedo agregar los datos de df2 en el mismo gráfico? Todos los ejemplos que he encontrado en línea que he encontrado en línea parecen centrarse en cómo puedes crear gráficos adyacentes (por ejemplo, a través de las opciones ‘hue’ y ‘col_wrap’). Además, prefiero no usar los ejemplos de conjuntos de datos donde podría haber una columna adicional, ya que esto no tiene un significado natural en el proyecto en el que estoy trabajando.

Si hay una mezcla de funciones de matplotlib / seaborn que se requieren para lograr esto, agradecería que alguien pudiera ayudar a ilustrar. ¡Gracias!

Puede usar la clase FacetGrid para obtener el resultado deseado. Necesitará reemplazar sus llamadas de trazado con estas líneas:

 # sns.lmplot('x1', 'y1', df1, fit_reg=True, ci = None) # sns.lmplot('x2', 'y2', df2, fit_reg=True, ci = None) df = pd.concat([df1.rename(columns={'x1':'x','y1':'y'}) .join(pd.Series(['df1']*len(df1), name='df')), df2.rename(columns={'x2':'x','y2':'y'}) .join(pd.Series(['df2']*len(df2), name='df'))], ignore_index=True) pal = dict(df1="red", df2="blue") g = sns.FacetGrid(df, hue='df', palette=pal, size=5); g.map(plt.scatter, "x", "y", s=50, alpha=.7, linewidth=.5, edgecolor="white") g.map(sns.regplot, "x", "y", ci=None, robust=1) g.add_legend(); 

Esto dará como resultado esta ttwig:

introduzca la descripción de la imagen aquí

Que es si entiendo correctamente es lo que necesitas.

Tenga en cuenta que deberá prestar atención a los parámetros de .regplot y es posible que desee cambiar los valores que he puesto como ejemplo.