如何在 Seaborn 的 Pairplot 中绘制右轴和上轴并删除左轴和下轴?

Sad*_*dae 2 python matplotlib seaborn

而不是默认的“盒装”轴(和刻度线,标签......)样式,我只想拥有右侧和顶部轴,即:

轴示例

这应该很容易,但我在文档中找不到必要的选项。

import seaborn as sns

penguins = sns.load_dataset("penguins")
g=sns.pairplot(penguins)
plt.show()
Run Code Online (Sandbox Code Playgroud)

Diz*_*ahi 6

这实际上不是一件容易的事,因为你需要处理很多由 seaborn 硬编码的东西(spines、ticks、labels)。

sns.set_style('ticks')
penguins = sns.load_dataset("penguins")
g=sns.pairplot(penguins)

for ax in g.axes.flat:
    sns.despine(left=True, right=False, bottom=True, top=False, ax=ax)
    ax.xaxis.set_ticks_position('top')
    ax.yaxis.set_ticks_position('right')
    plt.setp(ax.yaxis.get_ticklabels(), visible=ax.is_last_col())
    plt.setp(ax.xaxis.get_ticklabels(), visible=ax.is_first_row())
    
for ax1,ax2 in g.axes[:,[0,-1]]:
    ax2.yaxis.set_label_position('right')
    ax2.set_ylabel(ax1.get_ylabel(), visible=True)
    ax1.set_ylabel('')
for ax1,ax2 in g.axes[[0,-1],:].T:
    ax1.xaxis.set_label_position('top')
    ax1.set_xlabel(ax2.get_xlabel(), visible=True)
    ax2.set_xlabel('')

plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明