Seaborn 对数图仅适用于特定列

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 轴上使用对数刻度,对于其余的正常刻度。有什么办法可以实现这一点吗?

tdy*_*tdy 8

迭代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)

鸢尾花配对图,其中花瓣列具有对数 x 尺度