【问题标题】:seaborn two corner pairplotseaborn 两角对图
【发布时间】:2020-08-04 14:30:29
【问题描述】:

我想使用两个角对图创建一个对图。 使用

import seaborn as sns; sns.set(style="ticks", color_codes=True)
iris = sns.load_dataset("iris")
g = sns.pairplot(iris, hue="species", corner=True)

我获得了网格的下三角形。 我想做的是使用不同的色调值在网格的上部(非对角线)部分放置另一个配对图。

import seaborn as sns; sns.set(style="ticks", color_codes=True)
iris = sns.load_dataset("iris")
iris['species'] = iris['species'].map({'setosa': 0, 
                                   'versicolor': 1, 
                                   'virginica': 2})

sns.pairplot(iris, hue="species", corner=True)
sns.pairplot(iris, hue="petal_length", corner=True)

有没有办法在上三角形上绘制?还是加入两个不同的pairplot?

提前致谢

【问题讨论】:

  • 我认为你将不得不在 matplotlib 中“自己动手”。

标签: python matplotlib seaborn


【解决方案1】:

没有办法在上面的三角形上绘图。但是,您可以做的是制作两个图,其中至少一个带有corner=False,然后将角图的下三角形和对角轴添加到完整图。但是,这只有在两个图的 pairplot 参数相同时才有意义,否则(如您的示例中)轴标签和图例将仅对一个三角形有效(除非您手动添加第二个图例以及右轴和上轴到上面的三角形 suplots,但在这种情况下,从一开始就可能更容易滚动你自己的)。

示例(iris 奇数行的下三角和对角线,偶数行的上三角):

import matplotlib.pyplot as plt
import seaborn as sns; sns.set(style="ticks", color_codes=True)
iris = sns.load_dataset("iris")

pg1 = sns.pairplot(iris[1::2], hue="species", corner=True)
pg2 = sns.pairplot(iris[::2], hue="species", corner=False, diag_kind=None))

# remove lower triangle and diagonal from figure 2
for ax in pg2.fig.get_axes():
    if ax.get_geometry()[2] in [1,5,6,9,10,11,13,14,15,16]:
        ax.remove()

# add all axes from figure 1 (lower triangle and diagonal) to figure 2
for ax in pg1.fig.get_axes():
    ax.figure = pg2.fig # in the next step we can only add axes from the same figure
    pg2.fig.add_axes(ax)

# close figure 1 which is not needed anymore    
plt.close(pg1.fig)

为了节省一些精力,查找所有必要索引的必要代码是:

upper_triangular_list = []

k=10

for i in range(k+1):
    for c in range(i-1):
        upper_triangular_list.append((i-1)*k+c+1)

print(upper_triangular_list)

【讨论】:

    猜你喜欢
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    • 2020-11-28
    • 1970-01-01
    • 2019-11-23
    相关资源
    最近更新 更多