Cuando agrego la opción c a un diagrama de dispersión en matplotlib, las etiquetas del eje x desaparecen. Aquí hay un ejemplo: https://github.com/Kornel/scatterplot-matplotlib/blob/master/Scatter%20plot%20x%20axis%20labels.ipynb (las solicitudes de extracción son bienvenidas :))
Aquí está el mismo ejemplo que en el cuaderno:
import pandas as pd import matplotlib.pyplot as plt test_df = pd.DataFrame({ "X": [1, 2, 3, 4], "Y": [5, 4, 2, 1], "C": [1, 2, 3, 4] })Ahora compare el resultado de:
test_df.plot(kind="scatter", x="X", y="Y", s=50);Para:
test_df.plot(kind="scatter", x="X", y="Y", c="C");¿Dónde están las etiquetas del eje x? ¿Es esta una característica que me estoy perdiendo?
Versión de Pandas: 0.18.1 Matplotlib: 1.5.3 Python: 3.5.2
Gracias por cualquier ayuda, Kornel
EDITAR : la solución señalada por @Kewl es llamar a plt.subplots y especificar los ejes:
fig, ax = plt.subplots() test_df.plot(kind="scatter", x="X", y="Y", s=50, c="C", cmap="plasma", ax=ax);da
PD Parece un problema de jupyter, la etiqueta está bien cuando se llama sin un cuaderno jupyter
¡Eso me parece un bicho extraño con pandas conspirando! Aquí hay una forma de evitarlo:
fig, ax = plt.subplots() df.plot(kind='scatter',x='X', y='Y', c='C', ax=ax) ax.set_xlabel("X") plt.show()Esto le dará el gráfico que espera:
Si está utilizando Anaconda, la instalación de pandas con el canal conda-forge resuelve el problema.
conda install -c conda-forge pandasPuedes hacerlo así.
plt.scatter(x="X", y="Y", c=df.color) plt.xlabel("X axis label") plt.ylabel("Y axis label")