Seaborn FacetGrid: сделать пересечение осей в (0, 0) - PullRequest
0 голосов
/ 02 июля 2018

Я использую Seaborn's FacetGrid для разброса фрейма данных. Вот упрощенный пример:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(np.random.randint(-100, 100, size=(100, 2)), columns=['x', 'y'])

fig = sns.FacetGrid(data=df)
fig.map(plt.scatter, 'x', 'y')

enter image description here

Это заставляет оси пересекаться в левом нижнем углу графика. Я хочу, чтобы они пересеклись в (0, 0). В Matplotlib я бы сделал это с помощью функции set_position() позвоночника. Но я не мог узнать, как получить доступ к этой функции через Seaborn. Как я могу изменить место пересечения осей на моем графике?

1 Ответ

0 голосов
/ 02 июля 2018

Основной вопрос, по-видимому, следующий: Как получить matplotlib Axes от объекта FacetGrid Морского Рога?

Если g = seaborn.FacetGrid(...), то g.axes - это пустой массив Axes. Здесь у вас есть один подзаговор, поэтому единственный элемент массива - это оси, которые нужно искать,

ax = g.axes[0,0]

Оттуда вы можете использовать известное решение для установки положения позвоночника с помощью set_position, как показано, например, в демонстрация размещения позвоночника .

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(np.random.randint(-100, 100, size=(100, 2)), columns=['x', 'y'])

g = sns.FacetGrid(data=df)
g.map(plt.scatter, 'x', 'y')

ax = g.axes[0,0]
ax.spines['left'].set_position('zero')
ax.spines['bottom'].set_position('zero')

plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...