A ont produit un boxplot avec Facetgrid dans seaborn de la manière suivante
# Import the dataset
tips = sns.load_dataset("tips")
# Plot using Facegrid, separated by smoke
plt.style.use('ggplot')
g = sns.FacetGrid(tips, col="smoker", size=5, aspect=1.5)
g.map(sns.boxplot, "sex", "total_bill", palette='viridis', order=['Male', 'Female'])
plt.show()
Je veux maintenant dessiner des lignes horizontales distinctes dans chacune des parcelles. Par exemple, une ligne horizontale (avec coordonnée (0,10)) niquement dans le graphique de gauche et une autre ligne horizontale (avec les coordonnées (0,30)) niquement dans le graphique de droite.
Comment puis-je m'y prendre?
Vous pouvez obtenir une liste des axes utilisés dans le FacetGrid en utilisant FacetGrid.axes
qui renvoie les axes utilisés. Vous pouvez ensuite effectuer toutes les opérations matplotlib normales en utilisant ces axes, comme axhline
pour les lignes horizontales, ou plt.text
pour mettre du texte sur les axes:
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset("tips")
# Plot using Facegrid, separated by smoke
plt.style.use('ggplot')
g = sns.FacetGrid(tips, col="smoker", size=5, aspect=1.5)
g.map(sns.boxplot, "sex", "total_bill", palette='viridis', order=['Male', 'Female'])
ax1, ax2 = g.axes[0]
ax1.axhline(10, ls='--')
ax2.axhline(30, ls='--')
ax1.text(0.5,25, "Some text")
ax2.text(0.5,25, "Some text")
plt.show()
De plus, si vous avez un tas de grilles que vous souhaitez ajouter une ligne horizontale (disons à y = 10) à tous, vous pouvez simplement "mapper" le "plt.axhline" avec votre objet grille:
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset("tips")
# Plot using Facegrid, separated by smoke
plt.style.use('ggplot')
g = sns.FacetGrid(tips, col="smoker", size=5, aspect=1.5)
g.map(sns.boxplot, "sex", "total_bill", palette='viridis', order=['Male', 'Female'])
g.map(plt.axhline, y=10, ls='--', c='red')
Il y a axhline
et hlines
. Exemple simple:
chart = sns.relplot(x="x", y="y", kind="line", data=df)
chart.axes[0][0].axhline(y = 10, color='black', linewidth=2, alpha=.7)
chart.axes[0][0].hlines( y = 20, color='black', linewidth=2, alpha=.7,
xmin = 30, xmax = 50)
On dirait que hlines
autorise min-max ( documentation ) mais pas axhline
.