Seaborn.despine () отрицает эффект перемещения оси y в правую сторону фигуры

posdef спросил: 12 мая 2018 в 03:39 в: python

Существует множество примеров создания сюжета с двумя или более у-осями, но перемещение особой оси Y в правую часть графика немного сложнее.

import numpy as np
from matplotlib import pyplot as plt
import seaborn as sns
%matplotlib inlinevalues = np.random.randint(1,20,100)f = plt.figure()
ax = f.add_subplot(111)
# sns.despine(offset=10) <- problem here...ax.yaxis.tick_right()
ax.yaxis.set_ticks_position('both')
sns.distplot(values)

Фрагмент выше создает график с тиками справа, однако, если вы хотите прервать график (раскомментируйте указанную строку), он выглядит так:

Боковой вопрос: мотивация оси справа - это то, что я рисую это вместе с другим сюжетом бок о бок, и мне хотелось бы, чтобы у-оси должны быть по обе стороны от подзаголовков, а не между ними.

Любые идеи?

2 ответа

posdef ответил: 14 мая 2018 в 04:14
Благодарю. Можно ли управлять этим отдельно для каждого подзаголовка? Как я писал в нижней части вопроса, у меня есть две раскладки рядом, я хочу, чтобы один из них имел левый позвоночник, а другой - правый.
Есть решение
Diziet Asahi ответил: 12 мая 2018 в 05:26

despine имеет аргументы, позволяющие вам выбрать, какой из позвоночника скрыть (по умолчанию все, кроме левого).

верх, правый, левый, bottom: boolean, optional

Если True, удалите этот позвоночник.

import numpy as np
from matplotlib import pyplot as plt
import seaborn as sns
%matplotlib inlinevalues = np.random.randint(1,20,100)f = plt.figure()
ax = f.add_subplot(111)
sns.despine(offset=10, left=True, right=False)  # <-- only show the right spine
ax.yaxis.tick_right()
ax.yaxis.set_ticks_position('right')  # <--- I also edited this line to have tick marks only on the right
sns.distplot(values)
Diziet Asahi ответил: 14 мая 2018 в 04:25
Конечно, просто используйте аргумент ax=<ref to your subplot> для каждого вызова despine