wake-up-neo.net

Fügen Sie einem pandas plot x- und y-Beschriftungen hinzu

Angenommen, ich habe den folgenden Code, der mit Pandas etwas sehr Einfaches darstellt:

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')

Output

Wie kann ich einfach x- und y-Beschriftungen festlegen und gleichzeitig bestimmte Farbkarten verwenden? Mir ist aufgefallen, dass der Wrapper plot() für pandas DataFrames keine dafür spezifischen Parameter akzeptiert.

145
Everaldo Aguiar

Die Funktion df.plot() gibt ein Objekt matplotlib.axes.AxesSubplot Zurück. Sie können die Beschriftungen für dieses Objekt festlegen.

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>

enter image description here

Oder genauer gesagt: ax.set(xlabel="x label", ylabel="y label").

Alternativ wird die Bezeichnung der Index-X-Achse automatisch auf den Indexnamen gesetzt, falls vorhanden. also würde df2.index.name = 'x label' auch funktionieren.

258
TomAugspurger

Du kannst es so machen:

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()

Natürlich müssen Sie die Zeichenfolgen 'xlabel' und 'ylabel' durch die Zeichenfolgen ersetzen, die Sie möchten.

32
jesukumar

Wenn Sie die Spalten und den Index Ihres DataFrames beschriften, liefert pandas automatisch die entsprechenden Beschriftungen:

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')

enter image description here

In diesem Fall müssen Sie die y-Labels immer noch manuell eingeben (z. B. über plt.ylabel wie in den anderen Antworten gezeigt).

28
shoyer

Es ist möglich, beide Bezeichnungen zusammen mit axis.set Funktion. Suchen Sie nach dem Beispiel:

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()

enter image description here

16
Serenity

Für Fälle, in denen Sie pandas.DataFrame.hist:

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

Beachten Sie, dass Sie ein ARRAY von Plots erhalten, anstatt eines Plots. Um das x-Label zu setzen, müssen Sie so etwas tun

plt[0][0].set_xlabel("column A")
12
Selah

pandas verwendet matplotlib für grundlegende Datenrahmenzeichnungen. Wenn Sie also pandas für ein einfaches Diagramm verwenden, können Sie matplotlib zur Anpassung des Diagramms verwenden. Ich schlage hier jedoch eine alternative Methode vor, bei der seaborn verwendet wird, die eine stärkere Anpassung des Diagramms ermöglicht, ohne auf die grundlegende Ebene von matplotlib überzugehen.

Arbeitscode:

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') 

enter image description here

1
Dr. Arslan