首页 > 解决方案 > 在不同的子图中绘制不同组的数据框

问题描述

我想在一个主图中绘制 4 个不同的散点图。数据来自从 .csv 文件读取的分组数据帧。初始数据框如下所示:

df.to_csv("File.csv", index=False)

东风:

类别1 类别2 X
0 一个 X 4 5.1
1 X 3 4.2
2 一个 是的 2 7.1
3 一个 z 9 6.1
... ... ... ... ...
97 一个 z 4 5.1
98 一个 w 3 4.2
99 是的 2 7.1
100 z 9 6.1

如您所见,category1 只有两种值(A,B),而 category2 有 4 种值(x,y,z,w)。X 和 Y 值是随机的,仅用于显示目的。

使用以下命令创建了分组的 df:

dfGrouped = df.groupby(["Category1 ","Category2"])

df分组:

X
一个 X 4 5.1
一个 7 9.1
是的 3 4.2
3 4.2
3 4.2
z 2 7.1
w 9 6.1
... ... ... ...
X 4 5.1
是的 3 4.2
z 2 7.1
2 7.1
w 9 6.1

我试图单独绘制它们,但它不起作用:

fig, ax = plt.subplots(figsize=(8, 6))
ax.margins(0.05)
for name, group in dfGrouped:
    ax.plot(group.X, group.Y, marker='o', linestyle='', ms=2, label=name)

我什至尝试使用 get_group 调用组,但没有成功。

dfGrouped= dfGrouped.get_group(("A","x"))

有没有办法在一个主图中绘制 4 个不同的散点图(基于“category2”:x、y、z、w),每个图包含 2 组具有 2 种不同颜色的值(基于“Category1”:甲,乙)?

标签: pythonpandasdataframeplotgroup-by

解决方案


你可以使用seaborn.relplot

import numpy as np
import seaborn as sns
# dummy data
df = pd.DataFrame({'Category1': np.random.choice(['A','B'], size=100),
                   'Category2': np.random.choice(['w','x', 'y', 'z'], size=100),
                   'x': np.random.random(size=100),
                   'y': np.random.random(size=100),
                   })
# plot
sns.relplot(data=df, x='x', y='y', col='Category2', col_wrap=2, hue='Category1')

输出: seaborn 关系图


推荐阅读