python - 使用多个数据集创建 seaborn 散点图矩阵(PairGrid)

标签 python pandas csv seaborn scatter-plot

我有一个数据框,其中包含来自几个不同模型的土壤温度数据,我想为其创建一个散点图矩阵。数据框如下所示:

数据是按模型(或站)组织的,我还包括了几个列来区分冷季或暖季 ['Season'] 以及图层 ['Layer'] 之间发生的数据数据来自。

我的目标是创建一个具有以下特征的散点图矩阵:

  1. 按季节颜色编码的数据(我已经在脚本中设置了 远)
  2. 底部三角形仅包含从 0cm 到 30cm 的数据 土层,上三角仅由来自 30cm至300cm土层。

我已经想出如何一次为一个三角形/数据集的一部分创建一个散点图矩阵,例如在这个例子中:

但是我不确定如何在每个三角形中使用不同的数据部分。

相关文件可以在这里找到:

  1. dframe_btm
  2. dframe_top
  3. dframe_master

这里是相关代码

dframe_scatter_top = pd_read.csv(dframe_top.csv)
dframe_scatter_btm = pd_read.csv(dframe_btm.csv)
dframe_master = pd.read_csv(dframe_master.csv)
scatter1 = sn.pairplot(dframe_scatter_top,hue='Season',corner='True')
sns.set_context(rc={"axes.labelsize":20}, font_scale=1.0)
sns.set_context(rc={"legend.fontsize":18}, font_scale=1.0)
scatter1.set(xlim=(-40,40),ylim=(-40,40))
plt.show()

我怀疑诀窍是使用 PairGrid,并将数据的一部分设置为显示在 map 上部,另一部分显示在 map 下部,但是我目前没有看到明确拆分数据的方法。例如,是否有办法执行以下操作?

scatter1 = sns.PairGrid(dframe_master)
scatter1.map_upper(#only plot data from 0-30cm)
scatter1.map_lower(#only plot data from 30-300cm)

最佳答案

你很接近。您需要定义一个执行拆分的自定义函数:

import seaborn as sns
df = sns.load_dataset("penguins")

def scatter_subset(x, y, hue, mask, **kws):
    sns.scatterplot(x=x[mask], y=y[mask], hue=hue[mask], **kws)

g = sns.PairGrid(df, hue="species", diag_sharey=False)
g.map_lower(scatter_subset, mask=df["island"] == 'Torgersen')
g.map_upper(scatter_subset, mask=df["island"] != 'Torgersen')
g.map_diag(sns.kdeplot, fill=True, legend=False)
g.add_legend()

enter image description here

关于python - 使用多个数据集创建 seaborn 散点图矩阵(PairGrid),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68124000/

相关文章:

python - "segmentation fault (core dumped)",当尝试从终端运行 Tensorboard 时

python - Matplotlib sharex 对具有不同 x 值的数据?

python - 如何折叠/旋转多个 Pandas 列

python - 当被特定半径内的其他值包围时,在 pandas 数据框中获取不同的值然后为零

python - 使用 Python 高效地绘制 csv 格式的表格

java - Deeplearning4j 将模型解析为数据集

Python:无法写入 CSV 文件

python - opencv_createsamples : Invalid background description file?

python - Multiprocessing pool.map 不会从函数调用中返回

python - 请指点我关于等 ionic 开发的 QT 布局的(好的)文档