data = {0: {'VAR1': 'A', 'VAR2': 'X', 'VAL1': 3, 'VAL2': 1},
 1: {'VAR1': 'A', 'VAR2': 'X', 'VAL1': 4, 'VAL2': 1},
 2: {'VAR1': 'A', 'VAR2': 'X', 'VAL1': 5, 'VAL2': 1},
 3: {'VAR1': 'A', 'VAR2': 'Y', 'VAL1': 3, 'VAL2': 2},
 4: {'VAR1': 'A', 'VAR2': 'Y', 'VAL1': 4, 'VAL2': 2},
 5: {'VAR1': 'A', 'VAR2': 'Y', 'VAL1': 5, 'VAL2': 2},
 6: {'VAR1': 'A', 'VAR2': 'Z', 'VAL1': 3, 'VAL2': 3},
 7: {'VAR1': 'A', 'VAR2': 'Z', 'VAL1': 4, 'VAL2': 3},
 8: {'VAR1': 'A', 'VAR2': 'Z', 'VAL1': 5, 'VAL2': 3},
 9: {'VAR1': 'B', 'VAR2': 'X', 'VAL1': 3, 'VAL2': 1},
 10: {'VAR1': 'B', 'VAR2': 'X', 'VAL1': 4, 'VAL2': 1},
 11: {'VAR1': 'B', 'VAR2': 'X', 'VAL1': 5, 'VAL2': 1},
 12: {'VAR1': 'B', 'VAR2': 'Y', 'VAL1': 3, 'VAL2': 2},
 13: {'VAR1': 'B', 'VAR2': 'Y', 'VAL1': 4, 'VAL2': 2},
 14: {'VAR1': 'B', 'VAR2': 'Y', 'VAL1': 5, 'VAL2': 2},
 15: {'VAR1': 'B', 'VAR2': 'Z', 'VAL1': 3, 'VAL2': 3},
 16: {'VAR1': 'B', 'VAR2': 'Z', 'VAL1': 4, 'VAL2': 3},
 17: {'VAR1': 'B', 'VAR2': 'Z', 'VAL1': 5, 'VAL2': 3},
 18: {'VAR1': 'C', 'VAR2': 'X', 'VAL1': 3, 'VAL2': 1},
 19: {'VAR1': 'C', 'VAR2': 'X', 'VAL1': 4, 'VAL2': 1},
 20: {'VAR1': 'C', 'VAR2': 'X', 'VAL1': 5, 'VAL2': 1},
 21: {'VAR1': 'C', 'VAR2': 'Y', 'VAL1': 3, 'VAL2': 2},
 22: {'VAR1': 'C', 'VAR2': 'Y', 'VAL1': 4, 'VAL2': 2},
 23: {'VAR1': 'C', 'VAR2': 'Y', 'VAL1': 5, 'VAL2': 2},
 24: {'VAR1': 'C', 'VAR2': 'Z', 'VAL1': 3, 'VAL2': 3},
 25: {'VAR1': 'C', 'VAR2': 'Z', 'VAL1': 4, 'VAL2': 3},
 26: {'VAR1': 'C', 'VAR2': 'Z', 'VAL1': 5, 'VAL2': 3}}

df = pd.DataFrame.from_dict(dictio, orient='index')

我喜欢实现:

  • 每一个独特元素的新轴在VAR1
  • VAR2中的元素的VAL1(x值)和VAL2(y值)的新散点图,从VAR1

VAR1=A轴示例

enter image description here

我想不出怎么处理这个问题.

我的方法不是很好/正确:

group_var1 = df.groupby('VAR1')

for name_var1, grouped_var1 in group_var1:
    i = 0
    fig, axes = plt.subplots(nrows=3, ncols=1,figsize=(20, 8), tight_layout=True)
    group_var2 = grouped_var1.groupby('VAR2')
    for name_var2, grouped_var2 in group_var2:
        grouped_var2.plot(kind='scatter', ax=axes[i], x='VAL1', y='VAL2')

    i+=1

编辑:

这是可行的,但我非常不喜欢这种方法.

group_var1 = df.groupby('VAR1')
fig, axes = plt.subplots(nrows=3, ncols=1,figsize=(20, 8), tight_layout=True)
i = 0
for name_var1, grouped_var1 in group_var1:
    group_var2 = grouped_var1.groupby('VAR2')
    for name_var2, grouped_var2 in group_var2:
        grouped_var2.plot(kind='scatter', ax=axes[i], x='VAL2', y='VAL1', c=['red','green','yellow'])
    i+=1

推荐答案

我会使用seaborn.relplot,这将作为一个单行线:

import seaborn as sns

sns.relplot(df, col='VAR1', hue='VAR2', x='VAL1', y='VAL2')

输出:

seaborn relplot

Python相关问答推荐

将HTML输出转换为表格中的问题

当密钥是复合且唯一时,Pandas合并抱怨标签不唯一

2维数组9x9,不使用numpy.数组(MutableSequence的子类)

如何使用symy打印方程?

根据不同列的值在收件箱中移动数据

使用miniconda创建环境的问题

. str.替换pandas.series的方法未按预期工作

如何访问所有文件,例如环境变量

基于索引值的Pandas DataFrame条件填充

递归访问嵌套字典中的元素值

如何保持服务器发送的事件连接活动?

与命令行相比,相同的Python代码在Companyter Notebook中运行速度慢20倍

基于形状而非距离的两个numpy数组相似性

如何使用使用来自其他列的值的公式更新一个rabrame列?

python—telegraph—bot send_voice发送空文件

(Python/Pandas)基于列中非缺失值的子集DataFrame

在代码执行后关闭ChromeDriver窗口

如何在信号的FFT中获得正确的频率幅值

如何训练每一个pandaprame行的线性回归并生成斜率

如何为需要初始化的具体类实现依赖反转和接口分离?