Как избавиться от линий сетки при прокладке с помощью Seaborn + Pandas с secondary_y

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

В качестве компромисса я хотел бы удалить линии сетки вместе. Следующий код, однако, создает горизонтальные линии сетки для вторичной оси y.

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

Ответы

Ответ 1

Вы можете вывести объект Axes из строчки и выполнить .grid(False) на обеих осях.

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

Ответ 2

sns.set_style("whitegrid", {'axes.grid' : False})

Обратите внимание, что стиль может быть любым, который вы выбрали.

Для хорошей статьи об этом см. этот сайт.

Ответ 3

Проблема заключается в использовании форматирования по умолчанию pandas (или любого другого форматирования, которое вы выбрали). Не уверен, как все работает за кулисами, но эти параметры превзойдут форматирование, которое вы передаете, как в функции графика. Вы можете увидеть их список здесь, в словаре mpl_style

Чтобы обойти это, вы можете сделать это:

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

Ответ 4

Похоже на поведение с ошибкой в ​​ Pandas, причем не все аргументы ключевого слова передаются обоим осям. Но если вы хотите отключить сетку по умолчанию на морском побережье, вам просто нужно позвонить sns.set_style("dark"). Вы также можете использовать sns.axes_style в инструкции with, если вы хотите изменить значение по умолчанию для одной цифры.