Показать y_ticklabels на морском парном графике с общими осями

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

import seaborn as sns
iris = sns.load_dataset("iris")
x_vars = ['sepal_length', 'sepal_width', 'petal_length']
y_vars = ['petal_width']
pp = sns.pairplot(data=iris, x_vars=x_vars, y_vars=y_vars)

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

Теперь я хочу добавить отметки и метки оси Y ко второму и третьему подзаголовкам.

Добавить метки оси Y очень просто:

pp.set(ylabel='petal_width')

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

Но я хоть убей не могу понять, как показывать y_ticklabels.

Вещи как:

pp.set(yticklabels=np.arange(-0.5, 3.01, 0.5))

or:

for i in range(3):
    ax = pp.axes[0,i]
    ax.set_yticks(np.arange(-0.5, 3.01, 0.5))
    ax.set_yticklabels(np.arange(-0.5, 3.01, 0.5))
    ax.set_visible(True)

не имеет значения.


person ostrokach    schedule 27.06.2015    source источник
comment
PairGrid устанавливает оси с помощью sharey=True, поэтому вопрос здесь в том, можно ли это отключить постфактум.   -  person mwaskom    schedule 29.06.2015
comment
@mwaskom, не совсем. Тики Y других подзаголовков просто невидимы. У вас могут быть общие оси Y, но метки в виде галочки по-прежнему будут.   -  person CT Zhu    schedule 30.06.2015
comment
TIL, что share{x,y} устанавливает видимость меток!   -  person mwaskom    schedule 30.06.2015


Ответы (2)


Просто поверните yticklabels обратно в видимый, и все готово к желаемому подзаголовку:

import seaborn as sns
iris = sns.load_dataset("iris")
x_vars = ['sepal_length', 'sepal_width', 'petal_length']
y_vars = ['petal_width']
pp = sns.pairplot(data=iris, x_vars=x_vars, y_vars=y_vars)
_ = plt.setp(pp.axes[0,1].get_yticklabels(), visible=True) #changing the 2nd plot

_ = ... здесь для подавления нежелательной распечатки в интерактивных средах. введите описание изображения здесь

person CT Zhu    schedule 29.06.2015

3.0.3 - это моя версия matplotlib, и ответ CT Zhu не сработал для меня, и я не знаю, почему.

Я нашел ответ здесь < / сильный>.

Вы можете использовать метод tick_params на желаемом подзаголовке, чтобы показать yticklabels, передав параметр labelleft=True. (есть 2 способа)


"""enabling yticklabels for all subplots"""

import seaborn as sns
iris = sns.load_dataset("iris")
x_vars = ['sepal_length', 'sepal_width', 'petal_length']
y_vars = ['petal_width']
pp = sns.pairplot(data=iris, x_vars=x_vars, y_vars=y_vars)

# iterating over all subplots
for ax in pp.axes.flat:
    # labelleft refers to yticklabels on the left side of each subplot
    ax.tick_params(axis='y', labelleft=True) # method 1
    # ax.yaxis.set_tick_params(labelleft=True) # method 2
plt.show()

включение yticklabels для общих осей

Из tick_params документов.

Измените внешний вид меток, меток меток и линий сетки.

person surify    schedule 06.05.2019