Seaborn pairplot 仅针对特定列具有对数刻度
Seaborn pairplot with log scale only for specific columns
我有一个数据框,我正在使用 seaborn pairplot
绘制一个目标列与其余列的对比图。
代码如下,
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)
var_lst
不是静态列表,我只是提供了一个例子。
我需要的是在 Y 轴上绘制 tgt_var
,在 x 轴上绘制每个 var_lst
。
我可以用上面的代码做到这一点,但我也想仅在 var_lst
项为 'GH' 或 'MS' 时才在 X 轴上使用对数刻度,因为其余正常比例。有什么办法可以实现吗?
如果 xlabel 匹配“GH”或“MS”,则迭代 pp.axes.flat
并设置 xscale="log"
:
log_columns = ["GH", "MS"]
for ax in pp.axes.flat:
if ax.get_xlabel() in log_columns:
ax.set(xscale="log")
鸢尾花数据集的完整示例,其中花瓣列为 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")
我有一个数据框,我正在使用 seaborn pairplot
绘制一个目标列与其余列的对比图。
代码如下,
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)
var_lst
不是静态列表,我只是提供了一个例子。
我需要的是在 Y 轴上绘制 tgt_var
,在 x 轴上绘制每个 var_lst
。
我可以用上面的代码做到这一点,但我也想仅在 var_lst
项为 'GH' 或 'MS' 时才在 X 轴上使用对数刻度,因为其余正常比例。有什么办法可以实现吗?
如果 xlabel 匹配“GH”或“MS”,则迭代 pp.axes.flat
并设置 xscale="log"
:
log_columns = ["GH", "MS"]
for ax in pp.axes.flat:
if ax.get_xlabel() in log_columns:
ax.set(xscale="log")
鸢尾花数据集的完整示例,其中花瓣列为 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")