Saltar al contenido

Seaborn Jointplot agrega colores para cada clase

Buscamos por internet y así brindarte la respuesta a tu inquietud, en caso de inquietudes puedes dejarnos tu inquietud y te contestamos con mucho gusto.

La solución obvia es dejar que el regplot solo dibuje la línea de regresión, pero no los puntos y agréguelos a través de un gráfico de dispersión habitual, que tiene el color c argumento.

g = sns.jointplot(X, y, kind='reg', scatter = False )
g.ax_joint.scatter(X,y, c=classes)

ingrese la descripción de la imagen aquí

Me las arreglé para encontrar una solución que es exactamente lo que necesito. Gracias a @ImportanceOfBeingErnest que me dio la idea de dejar que el regplot dibuja solo la línea de regresión.

Solución:

import pandas as pd

classes = np.array([1., 1., 1., 1., 1., 1., 1., 1., 2., 2., 2., 2., 2., 2., 2.,
                    2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 2., 
                    2., 3., 3., 3., 3., 3., 3., 3., 3., 3., 3., 3., 3., 3., 3., 
                    3., 3., 3., 3., 3., 3., 3.])

df = pd.DataFrame(map(list, zip(*[X.T, y.ravel().T])))
df = df.reset_index()
df['index'] = classes[:]

g = sns.jointplot(X, y, kind='reg', scatter = False )
for i, subdata in df.groupby("index"):
    sns.kdeplot(subdata.iloc[:,1], ax=g.ax_marg_x, legend=False)
    sns.kdeplot(subdata.iloc[:,2], ax=g.ax_marg_y, vertical=True, legend=False)
    g.ax_joint.plot(subdata.iloc[:,1], subdata.iloc[:,2], "o", ms = 8)
plt.tight_layout()
plt.show()

ingrese la descripción de la imagen aquí

Te mostramos las reseñas y valoraciones de los lectores

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada.