Supposons que le code suivant trace quelque chose de très simple avec des 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')
Comment définir facilement des étiquettes x et y tout en préservant ma capacité à utiliser des cartes de couleurs spécifiques? J'ai remarqué que l'encapsuleur plot()
pour pandas _ DataFrames ne prend aucun paramètre spécifique pour cela.
La fonction df.plot()
renvoie un objet matplotlib.axes.AxesSubplot
. Vous pouvez définir les étiquettes sur cet objet.
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>
Ou, plus succinctement: ax.set(xlabel="x label", ylabel="y label")
.
Sinon, l'étiquette de l'axe des x de l'index est automatiquement définie sur le nom de l'index, le cas échéant. alors df2.index.name = 'x label'
fonctionnerait aussi.
Vous pouvez utiliser le faire comme ceci:
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()
Évidemment, vous devez remplacer les chaînes "xlabel" et "ylabel" par ce que vous voulez qu'elles soient.
Si vous étiquetez les colonnes et l’index de votre DataFrame, pandas fournira automatiquement les étiquettes appropriées:
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')
Dans ce cas, vous devrez toujours fournir les étiquettes y manuellement (par exemple, via plt.ylabel
, comme indiqué dans les autres réponses).
Il est possible de définir les deux étiquettes avec la fonction axis.set
. Cherchez l'exemple:
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()
Pour les cas où vous utilisez pandas.DataFrame.hist
:
plt = df.Column_A.hist(bins=10)
Notez que vous obtenez un tableau de parcelles, plutôt que d'une parcelle. Ainsi, pour définir le label x, vous devrez faire quelque chose comme ceci
plt[0][0].set_xlabel("column A")
pandas
utilise matplotlib
pour les tracés de base de données. Ainsi, si vous utilisez pandas
pour un tracé de base, vous pouvez utiliser matplotlib pour la personnalisation du tracé. Cependant, je propose ici une méthode alternative utilisant seaborn
, qui permet une plus grande personnalisation du tracé sans entrer dans le niveau de base de matplotlib
.
Code de travail:
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')