python - probabilidad - No hay contornos en los contenedores de histogramas de Matplotlib o distlots de Seaborn
probabilidad y estadistica en python (1)
Mientras hacía algunos problemas de práctica usando Seaborn y un cuaderno Jupyter, me di cuenta de que los gráficos distplot () no tenían los contornos más oscuros en los contenedores individuales que tienen todos los gráficos de muestra en la documentación. Intenté crear los gráficos usando Pycharm y noté lo mismo. Pensando que era un problema marino, probé algunos gráficos hist () usando matplotlib, solo para obtener los mismos resultados.
import matplotlib.pyplot as plt
import seaborn as sns
titanic = sns.load_dataset(''titanic'')
plt.hist(titanic[''fare''], bins=30)
produjo el siguiente gráfico:
Finalmente me topé con el parámetro ''edgecolor'' en la función plt.hist (), y configurarlo en negro fue el truco. Desafortunadamente, no he encontrado un parámetro similar para usar en la función distplot () de seaborn, por lo que todavía no puedo obtener un gráfico que parezca.
Busqué cambiar los rcParams en matplotlib, pero no tengo experiencia con eso y el siguiente script que ejecuté parecía no hacer nada:
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''
Solo estaba adivinando el valor que se suponía que debía cambiar, pero la ejecución de mis gráficos nuevamente no mostró cambios.
Luego intenté volver a la configuración predeterminada usando mpl.rcdefaults () pero una vez más, sin cambios.
Reinstalé matplotlib usando conda pero aún así los gráficos se ven iguales. Me estoy quedando sin ideas sobre cómo cambiar el color de borde predeterminado para estos gráficos. Estoy ejecutando las últimas versiones de Python, matplotlib y seaborn usando la compilación Conda.
Como parte de la actualización de matplotlib 2.0, los bordes de los gráficos de barras están desactivados de forma predeterminada . Sin embargo, puede usar el rcParam
plt.rcParams["patch.force_edgecolor"] = True
para encender los bordes a nivel mundial.
Probablemente la opción más fácil es establecer específicamente el color del borde cuando se crea una trama marina, utilizando el argumento
hist_kws
,
ax = sns.distplot(x, hist_kws=dict(edgecolor="k", linewidth=2))
Para las gráficas matplotlib, puede usar directamente el argumento
edgecolor
o
ec
.
plt.bar(x,y, edgecolor="k")
plt.hist(x, edgecolor="k")
Igualmente, para parcelas de pandas,
df.plot(kind=''hist'',edgecolor="k")
Un ejemplo marino completo:
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()