Seaborn PairGrid:显示每个子图的轴标签
Seaborn PairGrid: show axes labels for each subplot
有没有办法可以轻松地为 Seaborn 对图中的每个子图添加轴标签?这与此相关 但我不想添加刻度标签,而是添加轴标签,因为我拥有的配对图是 9*9,我不想每次都向下滚动以检查列名。
我希望这会像
这样简单
for ax in g.axes.flat:
_ = plt.setp(ax.get_ylabels(), visible=True)
_ = plt.setp(ax.get_xlabels(), visible=True)
您首先需要从轴上获取所有标签(例如ax.xaxis.get_label_text()
)并设置标签文本(ax.xaxis.set_label_text()
)。
我在这里使用了 for 循环和 i
、j
索引。可能有更简洁的矢量化方法来执行此操作,但至少它有效。
使用来自 seaborn
的 iris
示例数据集:
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
iris = sns.load_dataset("iris")
g = sns.PairGrid(iris)
g = g.map(plt.scatter)
xlabels,ylabels = [],[]
for ax in g.axes[-1,:]:
xlabel = ax.xaxis.get_label_text()
xlabels.append(xlabel)
for ax in g.axes[:,0]:
ylabel = ax.yaxis.get_label_text()
ylabels.append(ylabel)
for i in range(len(xlabels)):
for j in range(len(ylabels)):
g.axes[j,i].xaxis.set_label_text(xlabels[i])
g.axes[j,i].yaxis.set_label_text(ylabels[j])
plt.show()
有没有办法可以轻松地为 Seaborn 对图中的每个子图添加轴标签?这与此相关
我希望这会像
这样简单for ax in g.axes.flat:
_ = plt.setp(ax.get_ylabels(), visible=True)
_ = plt.setp(ax.get_xlabels(), visible=True)
您首先需要从轴上获取所有标签(例如ax.xaxis.get_label_text()
)并设置标签文本(ax.xaxis.set_label_text()
)。
我在这里使用了 for 循环和 i
、j
索引。可能有更简洁的矢量化方法来执行此操作,但至少它有效。
使用来自 seaborn
的 iris
示例数据集:
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
iris = sns.load_dataset("iris")
g = sns.PairGrid(iris)
g = g.map(plt.scatter)
xlabels,ylabels = [],[]
for ax in g.axes[-1,:]:
xlabel = ax.xaxis.get_label_text()
xlabels.append(xlabel)
for ax in g.axes[:,0]:
ylabel = ax.yaxis.get_label_text()
ylabels.append(ylabel)
for i in range(len(xlabels)):
for j in range(len(ylabels)):
g.axes[j,i].xaxis.set_label_text(xlabels[i])
g.axes[j,i].yaxis.set_label_text(ylabels[j])
plt.show()