¿Hay una manera de hacer que el marcador o el color de la gráfica de dispersión de matplotlib de acuerdo con una variable discreta en una columna diferente?

Estoy haciendo diagtwigs de dispersión de un DF usando matplotlib. Para obtener diferentes colores para cada conjunto de datos, estoy haciendo dos llamadas separadas a plt.scatter:

plt.scatter(zzz['HFmV'], zzz['LFmV'], label = dut_groups[0], color = 'r' ) plt.scatter(qqq['HFmV'], qqq['LFmV'], label = dut_groups[1], color = 'b' ) plt.legend() plt.show() 

Esto me da la dependencia de color deseada, pero realmente lo que sería ideal sería si pudiera hacer que los pandas me dieran el diagtwig de dispersión con varios conjuntos de datos en el mismo diagtwig por algo como

df.plot (kind = scatter (x, y, color = df.Group, marker = df.Head)

Aparentemente no hay tal animal (al menos que pueda encontrar). Entonces, lo mejor en mi mente sería colocar las llamadas plt.scatter en un bucle donde podría hacer que el color o el marcador varíe según una de las filas (no x o y, sino alguna otra fila. Si la fila I Si quisiera usar una variable continua, parece que podría usar un mapa de colores, pero en mi caso, la fila que debo demandar es una cadena (tipo de variable categórica, no un número).

Cualquier ayuda muy apreciada.

    Lo que estás haciendo casi funcionará, pero debes pasar el color un vector de colores, no solo a un vector de variables. Para que pudieras hacer:

     color = df.Group.map({dut_groups[0]: "r", dut_groups[1]: "b"}) plt.scatter(x, y, color=color) 

    Lo mismo ocurre con el estilo de marcador

    También puede usar Seaborn para hacer el mapeo de colores de la forma que espera (como se explica aquí ), aunque no hace mapeo de estilo de marcador:

     import seaborn as sns import pandas as pd from numpy.random import randn data = pd.DataFrame(dict(x=randn(40), y=randn(40), g=["a", "b"] * 20)) sns.lmplot("x", "y", hue="g", data=data, fit_reg=False) 

    introduzca la descripción de la imagen aquí