Supongamos que tengo el siguiente código que las parcelas de algo muy simple de usar pandas:

import pandas as pd
values = [[1, 2], [2, 5]]
df2 = pd.DataFrame(values, columns=['Type A', 'Type B'], 
                   index=['Index 1', 'Index 2'])
df2.plot(lw=2, colormap='jet', marker='.', markersize=10, 
         title='Video streaming dropout by category')

Agregar x e y etiquetas para una pandas parcela

¿Cómo puedo configurar fácilmente el x y el y-etiquetas, mientras que la preservación de mi capacidad para uso específico de colormaps? Me di cuenta de que la plot() contenedor para pandas DataFrames no toma ningún parámetro específico para eso.

6 Comentarios

  1. 259

    La df.plot() función devuelve un matplotlib.axes.AxesSubplot objeto. Puede configurar las etiquetas de ese objeto.

    In [4]: ax = df2.plot(lw=2, colormap='jet', marker='.', markersize=10, title='Video streaming dropout by category')
    
    In [6]: ax.set_xlabel("x label")
    Out[6]: <matplotlib.text.Text at 0x10e0af2d0>
    
    In [7]: ax.set_ylabel("y label")
    Out[7]: <matplotlib.text.Text at 0x10e0ba1d0>

    Agregar x e y etiquetas para una pandas parcela

    O, más sucintamente: ax.set(xlabel="x label", ylabel="y label").

    Alternativamente, el índice de la etiqueta de eje x se establece automáticamente en el nombre del Índice, si tiene uno. así df2.index.name = 'x label' sería demasiado trabajo.

    • hay una razón en particular por x e y las etiquetas no se pueden agregar como argumentos para pd.plot()? Teniendo en cuenta el concisión de pd.plot() más de plt.plot() parece que tendría sentido para que sea aún más sucinta, en lugar de tener que llamar a ax.set_ylabel().
    • Cuando hice ax.set_ylabel("y label"), devuelve un error 'list' object is not callable. Alguna idea?
    • Interesante. No sé si es la versión-dependiente, pero voy a tener que hacer ax.axes.set_ylabel("y label").
    • Creo que se podría poner la ax.set(xlabel='...) mayor en esta respuesta como podría ser perdidas pasado el gráfico. Lo que realmente es la más sucinta aproximación de conjunto a los dos ejes, que es el común de caso de uso.
  2. 32

    Puede utilizar hacerlo así:

    import matplotlib.pyplot as plt 
    import pandas as pd
    
    plt.figure()
    values = [[1, 2], [2, 5]]
    df2 = pd.DataFrame(values, columns=['Type A', 'Type B'], 
                       index=['Index 1', 'Index 2'])
    df2.plot(lw=2, colormap='jet', marker='.', markersize=10,
             title='Video streaming dropout by category')
    plt.xlabel('xlabel')
    plt.ylabel('ylabel')
    plt.show()

    Obviamente, usted tiene que reemplazar las cuerdas ‘xlabel’ y ‘ylabel» con lo que usted desea ser.

  3. 28

    Si la etiqueta de las columnas y el índice de su DataFrame, pandas automáticamente el suministro de etiquetas apropiadas:

    import pandas as pd
    values = [[1, 2], [2, 5]]
    df = pd.DataFrame(values, columns=['Type A', 'Type B'], 
                      index=['Index 1', 'Index 2'])
    df.columns.name = 'Type'
    df.index.name = 'Index'
    df.plot(lw=2, colormap='jet', marker='.', markersize=10, 
            title='Video streaming dropout by category')

    Agregar x e y etiquetas para una pandas parcela

    En este caso, usted todavía necesitará de suministro y las etiquetas manualmente (por ejemplo, a través de plt.ylabel como se muestra en las otras respuestas).

    • en la actualidad, que «suministro automático de DataFrame’ no funciona. Yo sólo lo intentó (pandas versión 0.16.0, matplotlib 1.4.3) y la trama se genera correctamente, pero sin las etiquetas de los ejes.
    • podría usted por favor, envíe un informe de error en la pandas página de github? github.com/pydata/pandas/issues
    • sabes qué, hoy en día, al menos, el xlabel está trabajando. tal vez había algo extraño en el dataframe que estaba usando en el día de ayer (?). si puedo reproducir, voy a archivo!
  4. 17

    Es posible establecer tanto las etiquetas junto con axis.set función. Mira el ejemplo:

    import pandas as pd
    import matplotlib.pyplot as plt
    values = [[1,2], [2,5]]
    df2 = pd.DataFrame(values, columns=['Type A', 'Type B'], index=['Index 1','Index 2'])
    ax = df2.plot(lw=2,colormap='jet',marker='.',markersize=10,title='Video streaming dropout by category')
    # set labels for both axes
    ax.set(xlabel='x axis', ylabel='y axis')
    plt.show()

    Agregar x e y etiquetas para una pandas parcela

    • Me gusta la .set(xlabel='x axis', ylabel='y axis') solución, ya que me permite poner todo en una sola línea, a diferencia de la set_xlabel y set_ylabel parcela métodos. Me pregunto por qué todos ellos (incluyendo el método de juego, por cierto) no devolver la parcela objeto o, al menos, algo heredado de ella.
  5. 12

    Para los casos donde se utiliza pandas.DataFrame.hist:

    plt = df.Column_A.hist(bins=10)

    Tenga en cuenta que usted obtener un conjunto de parcelas, en lugar de una parcela. Por lo tanto, para establecer la etiqueta x tendrá que hacer algo como esto

    plt[0][0].set_xlabel("column A")
  6. 1

    pandas utiliza matplotlib básica dataframe parcelas. Por lo tanto, si usted está utilizando pandas básicos de la parcela puede utilizar matplotlib para la parcela de personalización. Sin embargo, propongo un método alternativo aquí usando seaborn que permite una mayor personalización de la parcela, mientras que no se va en el nivel básico de matplotlib.

    Código De Trabajo:

    import pandas as pd
    import seaborn as sns
    values = [[1, 2], [2, 5]]
    df2 = pd.DataFrame(values, columns=['Type A', 'Type B'], 
                       index=['Index 1', 'Index 2'])
    ax= sns.lineplot(data=df2, markers= True)
    ax.set(xlabel='xlabel', ylabel='ylabel', title='Video streaming dropout by category') 

    Agregar x e y etiquetas para una pandas parcela

Dejar respuesta

Please enter your comment!
Please enter your name here