use*_*602 4 python matplotlib python-3.x seaborn pairplot
我有一个数据框,我正在使用 seabornpairplot来绘制一个目标列与其余列的对比。
代码如下,
import seaborn as sns
import matplotlib.pyplot as plt
tgt_var = 'AB'
var_lst = ['A','GH','DL','GT','MS']
pp = sns.pairplot(data=df,
y_vars=[tgt_var],
x_vars=var_lst)
pp.fig.set_figheight(6)
pp.fig.set_figwidth(20)
Run Code Online (Sandbox Code Playgroud)
这var_lst不是静态列表,我只是提供了一个示例。tgt_var我需要的是在 Y 轴上绘制,var_lst在 x 轴上绘制。
我可以使用上面的代码来做到这一点,但我也想仅当项目var_lst是“GH”或“MS”时才在 X 轴上使用对数刻度,对于其余的正常刻度。有什么办法可以实现这一点吗?
迭代pp.axes.flat并设置xscale="log"xlabel 是否匹配“GH”或“MS”:
log_columns = ["GH", "MS"]
for ax in pp.axes.flat:
if ax.get_xlabel() in log_columns:
ax.set(xscale="log")
Run Code Online (Sandbox Code Playgroud)
鸢尾花数据集的完整示例,其中花瓣列为xscale="log":
import seaborn as sns
df = sns.load_dataset("iris")
pp = sns.pairplot(df)
log_columns = ["petal_length", "petal_width"]
for ax in pp.axes.flat:
if ax.get_xlabel() in log_columns:
ax.set(xscale="log")
Run Code Online (Sandbox Code Playgroud)