Подтвердить что ты не робот

Никаких контуров на бункерах гистограмм Matplotlib или слотов Seaborn

При выполнении некоторых практических проблем с использованием морского судна и ноутбука Jupyter я понял, что графики distplot() не имеют более темных контуров на отдельных ячейках, которые имеют все диаграммы образцов в документации. Я попытался создать графики с помощью Pycharm и заметил то же самое. Подумав, что это была проблема с морским дном, я пробовал некоторые диаграммы hist(), используя matplotlib, только для получения тех же результатов.

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

появился следующий график:

введите описание изображения здесь

Наконец, я наткнулся на параметр "edgecolor" в функции plt.hist(), и настройка его на черный сделала трюк. К сожалению, я не нашел аналогичного параметра для использования в функции seaborn distplot(), поэтому я все еще не могу получить диаграмму, которая выглядит так, как должна.

Я искал изменения rcParams в matplotlib, но у меня нет опыта с этим, и следующие script Я бежал, казалось, ничего не делал:

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'

Я просто догадывался о значении, которое я должен был изменить, но запуск моих графиков снова не показывал никаких изменений.

Затем я попытался вернуться к настройкам по умолчанию, используя mpl.rcdefaults() но еще раз, никаких изменений.

Я переустановил matplotlib, используя conda, но все же графики выглядят одинаково. У меня заканчиваются идеи о том, как изменить цвет края по умолчанию для этих диаграмм. Я использую последние версии Python, matplotlib и seaborn, используя сборку Conda.

4b9b3361

Ответ 1

В качестве части обновления matplotlib 2.0 края на графиках отображаются по умолчанию. Однако вы можете использовать rcParam

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

чтобы повернуть края по всему миру.

Вероятно, самым простым вариантом является установка edgecolor при создании сюжета на морском дне с использованием аргумента hist_kws,

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

Для графиков matplotlib вы можете напрямую использовать аргумент edgecolor или ec.

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

Аналогично, для pandas графиков

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

Полный пример с морской стороны:

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()

введите описание изображения здесь