Trazado con pandas y matplotlib.

Estoy tratando de crear un diagtwig de dispersión en Python. Tengo un dataframe ‘df’ con una categoría específica y x e y son números de columna:

groups = df.groupby(category) fig, ax = plt.subplots() for name, group in groups: ax.plot(x=group.iloc[:,x], y=group.iloc[:,y], marker='o', linestyle='',label=name) fig = ax.get_figure() fig.savefig(path) 

Por alguna razón, estoy obteniendo un diagtwig de dispersión vacío. ¿Estoy haciendo algo mal?

ax.plot no tiene argumentos x e y .

La firma es Axes.plot(*args, **kwargs) , lo que significa que x e y son simplemente argumentos posicionales. Si especifica x= y y= se tratarán como argumentos de palabras clave y se ignorarán.

Así que elimina x= y y= del código,

 ax.plot(group.iloc[:,x], group.iloc[:,y], marker='o', linestyle='',label=name) 

Ejemplo completo:

 import numpy as np import pandas as pd import matplotlib.pyplot as plt df = pd.DataFrame({"x":np.random.rand(40), "y":np.random.rand(40), "category": np.random.choice(list("ABCD"), size=40)}) category = "category" x=1; y=2 groups = df.groupby(category) fig, ax = plt.subplots() for name, group in groups: ax.plot(group.iloc[:,x], group.iloc[:,y], marker='o', linestyle='',label=name) fig = ax.get_figure() #fig.savefig(path) plt.show()