Pas de contours sur les boîtes d'histogrammes Matplotlib ou de distplots Seaborn

en faisant quelques problèmes de pratique en utilisant seaborn et un carnet Jupyter, j'ai réalisé que les graphes de distplot() n'avaient pas les contours plus sombres sur les bacs individuels que tous les graphes échantillons dans la documentation ont. J'ai essayé de créer les graphiques en utilisant Pycharm et j'ai remarqué la même chose. Pensant que c'était un problème de seaborn, j'ai essayé quelques charts hist() en utilisant matplotlib, seulement pour obtenir les mêmes résultats.

import matplotlib.pyplot as plt
import seaborn as sns
titanic = sns.load_dataset('titanic')
plt.hist(titanic['fare'], bins=30)

donné le graphique suivant:

enter image description here

finalement je suis tombé sur le paramètre' edgecolor ' sur le plt.hist() de la fonction, et la valeur de noir fait le tour. Malheureusement, je n'ai pas trouvé de paramètre similaire à utiliser sur la fonction Seaborn distplot (), donc je suis toujours incapable d'obtenir un graphique qui ressemble à ce qu'il devrait.

j'ai cherché à changer les rcParams dans matplotlib, mais je n'ai aucune expérience avec cela et le script suivant que j'ai lancé semble faire de rien:/

import matplotlib as mpl

mpl.rcParams['lines.linewidth'] = 1
mpl.rcParams['lines.color'] = 'black'
mpl.rcParams['patch.linewidth'] = 1
mpl.rcParams['patch.edgecolor'] = 'black'
mpl.rcParams['axes.linewidth'] = 1
mpl.rcParams['axes.edgecolor'] = 'black'

j'étais en quelque sorte en train de deviner la valeur que j'étais censée changer, mais l'exécution de mes graphiques à nouveau n'a montré aucun changement.

j'ai ensuite essayé de revenir aux paramètres par défaut en utilisant mpl.rcdefaults() mais encore une fois, pas de changement.

j'ai réinstallé matplotlib en utilisant conda mais les graphes sont toujours les mêmes. Je suis à court d'idées sur la façon de changer la couleur de bord par défaut pour ces graphiques. J'exécute les dernières versions de Python, matplotlib, et seaborn en utilisant la construction Conda.

21
demandé sur ImportanceOfBeingErnest 2017-03-29 00:26:54

1 réponses

dans le cadre de la mise à jour vers matplotlib 2.0 les bords sur les tracés de barre sont désactivé par défaut. Cependant, vous pouvez utiliser le rcParam

plt.rcParams["patch.force_edgecolor"] = True

pour faire tourner les bords globalement.

probablement l'option la plus facile est de définir spécifiquement l'edgecolor lors de la création d'un tracé seaborn, en utilisant le hist_kws argument,

ax = sns.distplot(x, hist_kws=dict(edgecolor="k", linewidth=2))

pour les tracés matplotlib, vous pouvez utiliser directement le edgecolor ou ec argument.

plt.bar(x,y, edgecolor="k")
plt.hist(x, edgecolor="k")

également, pour les pandas parcelles,

df.plot(kind='hist',edgecolor="k")

un exemple complet de seaborn:

import  numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

x = np.random.randn(100)
ax = sns.distplot(x, hist_kws=dict(edgecolor="k", linewidth=2))
plt.show()

enter image description here

39
répondu ImportanceOfBeingErnest 2017-10-02 16:29:50