web-dev-qa-db-fra.com

Comment se débarrasser des lignes de la grille lors du traçage avec Seaborn + Pandas with secondary_y

Je trace deux séries de données avec Pandas avec seaborn importé. Idéalement, je voudrais que les lignes de grille horizontales soient partagées entre les axes gauche et droit, mais j'ai l'impression que C'est difficile à faire.

En guise de compromis, je voudrais supprimer les lignes de la grille tous ensemble. Le code suivant produit cependant les quadrillages horizontaux pour l'axe Y secondaire.

import pandas as pd
import numpy as np
import seaborn as sns


data = pd.DataFrame(np.cumsum(np.random.normal(size=(100,2)),axis=0),columns=['A','B'])
data.plot(secondary_y=['B'],grid=False)

gridlines that I want to get rid of

26
Artturi Björk

Vous pouvez retirer l'objet Axes après le traçage et exécuter .grid(False) sur les deux axes.

# Gets the axes object out after plotting
ax = data.plot(...)

# Turns off grid on the left Axis.
ax.grid(False)

# Turns off grid on the secondary (right) Axis.
ax.right_ax(False)
32
Luan Nguyen
sns.set_style("whitegrid", {'axes.grid' : False})

Notez que le style peut être celui que vous choisissez.

Pour un article sympa à ce sujet, reportez-vous à ce site .

25
Doug W

Le problème est avec l'utilisation du format par défaut pandas (ou quel que soit le format que vous ayez choisi). Vous ne savez pas comment les choses fonctionnent en arrière-plan, mais ces paramètres remplacent le format que vous passez comme dans la fonction de tracé Vous pouvez en voir une liste ici dans le dictionnaire mpl_style

Pour le contourner, vous pouvez le faire:

import pandas as pd
pd.options.display.mpl_style = 'default'
new_style = {'grid': False}
matplotlib.rc('axes', **new_style)
data = pd.DataFrame(np.cumsum(np.random.normal(size=(100,2)),axis=0),columns=['A','B'])
data.plot(secondary_y=['B'])

enter image description here

9
DataSwede

Cela ressemble à un comportement bogué dans Pandas, tous les arguments de mots clés n'étant pas transmis aux deux axes. Mais si vous voulez désactiver la grille par défaut dans seaborn, il vous suffit d'appeler sns.set_style("dark"). Vous pouvez aussi utiliser sns.axes_style dans une instruction with si vous ne souhaitez modifier la valeur par défaut que pour un chiffre.

5
mwaskom