我对seaborn Pairgrid有点挣扎.
假设我有一个像这样的Pairgrid:
如您所见,上三角形图反映了下三角形.我希望能够只绘制下三角形图,但到目前为止我找不到简单的方法.你能帮助我吗?
可能应该是一种更简单的方法,但这是有效的
import numpy as np import seaborn as sns iris = sns.load_dataset("iris") g = sns.pairplot(iris) for i, j in zip(*np.triu_indices_from(g.axes, 1)): g.axes[i, j].set_visible(False)
这基本上与接受的答案相同,但是使用来自seaborn.PairGrid
以下方面的官方方法:
import seaborn as sns import matplotlib.pyplot as plt sns.set() iris = sns.load_dataset("iris") def hide_current_axis(*args, **kwds): plt.gca().set_visible(False) g = sns.pairplot(iris) g.map_upper(hide_current_axis)
隐藏下半部分也很容易:
g.map_lower(hide_current_axis)
或隐藏对角线:
g.map_diag(hide_current_axis)
或者,只需PairGrid
直接使用即可进行更多控制:
from itertools import groupby def stackedhist(data, stackby, **kwds): groups = groupby(zip(stackby, data), lambda x: x[0]) grouped_data = [[v for _, v in items] for key, items in groups] plt.hist(grouped_data, stacked=True, edgecolor='none') g = sns.PairGrid(iris, diag_sharey=False) g.map_lower(sns.scatterplot, data=iris, hue='species', alpha=0.3, edgecolor='none') g.map_diag(stackedhist, stackby=iris['species']) g.map_upper(hide_current_axis)
这使: