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轴示例
我想不出怎么处理这个问题.
我的方法不是很好/正确:
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