34 votes

Pas de contour sur les bacs d'histogrammes Matplotlib ou de distplots Seaborn

Tout en faisant quelques exemples de problèmes à l'aide de seaborn et un Jupyter ordinateur portable, j'ai réalisé que la distplot() graphiques n'ont pas les sombres contours de la personne bacs que tous les exemples de graphes dans la documentation. J'ai essayé de créer des graphiques à l'aide de Pycharm et remarqué la même chose. Pensant que c'était une seaborn problème, j'ai essayé quelques hist() graphiques à l'aide de 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

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

J'ai regardé dans la modification de la rcParams dans matplotlib, mais je n'ai aucune expérience avec le script suivant, j'ai couru semblait ne rien faire:

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 juste une sorte de deviner la valeur que je devais changer, mais l'exécution de mes graphiques de nouveau montré aucun changement.

J'ai ensuite tenté de revenir aux paramètres par défaut à l'aide de mpl.rcdefaults() mais encore une fois, pas de changement.

J'ai réinstallé matplotlib à l'aide de conda mais encore les graphiques de la même manière. Je suis à court d'idées sur la façon de modifier la valeur par défaut couleur de l'arête pour ces cartes. Je suis en cours d'exécution les dernières versions de Python, matplotlib, et seaborn à l'aide de la Conda construire.

67voto

ImportanceOfBeingErnest Points 119438

Dans le cadre de la mise à jour de matplotlib 2.0 les bords de la barre de parcelles sont désactivés par défaut. Toutefois, vous pouvez utiliser le rcParam

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

pour activer les bords à l'échelle mondiale.

Probablement l'option la plus simple consiste à définir spécifiquement le edgecolor lors de la création d'un seaborn de la parcelle, à l'aide de l' hist_kws argument,

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

Pour matplotlib parcelles, vous pouvez utiliser directement l' edgecolor ou ec argument.

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

De même, pour les pandas parcelles,

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

Un complet seaborn exemple:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X