Python 当x和y是具有条件的同一变量时的Seaborn散射图
我有以下数据集:Python 当x和y是具有条件的同一变量时的Seaborn散射图,python,pandas,seaborn,facet,Python,Pandas,Seaborn,Facet,我有以下数据集: dat = [] import numpy as np import math for r in range(0,100): for c1 in ["A", "B"]: for c2 in ["x", "y", "z"]: rec = { "cat1": c1,
dat = []
import numpy as np
import math
for r in range(0,100):
for c1 in ["A", "B"]:
for c2 in ["x", "y", "z"]:
rec = {
"cat1": c1,
"cat2" : c2,
"value" : np.random.rand(1)[0]
}
dat.append(rec)
df = pd.DataFrame(dat)
df
我能画出好看的直方图:
grid = sns.displot(
df,
x="value",
col="cat1",
row="cat2",
facet_kws=dict(margin_titles=True),
)
for ax in grid.axes.flat:
ax.axvline(0, 0, 1, color="black", lw=1, linestyle="--")
但我在寻找一个散点图,其中cat1==a时“x”为“value”,cat1==B时“y”为“value”
这不符合我的要求:
sns.relplot(
data=df,
x=df.query("cat1 == 'A'")['value'],
y=df.query("cat1 == 'B'")['value'],
col="cat1",
row="cat2",
facet_kws=dict(margin_titles=True),
kind="scatter"
)
这也不是:
sns.relplot(
data=df,
x='value',
y='value',
col="cat1",
row="cat2",
facet_kws=dict(margin_titles=True),
kind="scatter"
)
我希望它看起来更像这样:
x和y都在绘制“value”变量,但它们是根据cat1=“A”还是cat1=“B”进行分割的。这个特殊的图形是用子图而不是面绘制的——这就是为什么0处的垂直线没有对齐(我试图在这里使用面散点图来精确地得到它)。要对齐子图,可以使用
fig,axs=plt.subplot(nrows=3,sharex=True)
sns.relplot(
data=df,
x='value',
y='value',
col="cat1",
row="cat2",
facet_kws=dict(margin_titles=True),
kind="scatter"
)