import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.DataFrame({'ID': {0: 93711, 1: 93717, 2: 93719, 3: 93731, 4: 93738, 5: 93755, 6: 93758, 7: 93760, 8: 93763},
'sex': {0: 'M', 1: 'M', 2: 'F', 3: 'M', 4: 'M', 5: 'F', 6: 'F', 7: 'F', 8: 'M'},
'age': {0: 56, 1: 22, 2: 13, 3: 20, 4: 26, 5: 26, 6: 55, 7: 54, 8: 40},
'insulin': {0: 31.68, 1: 23.64, 2: 65.64, 3: 127.98, 4: 33.42, 5: 122.46, 6: 32.52, 7: 119.88, 8: 64.68},
'totalPF': {0: 22.8, 1: 20.4, 2: 33.4, 3: 31.3, 4: 25.1, 5: 42.6, 6: 43.5, 7: 44.1, 8: 20.2}})
我有一个类似5000x30的数据帧,并在这里取了一个小样本
ID sex age insulin totalPF
0 93711 M 56 31.68 22.8
1 93717 M 22 23.64 20.4
2 93719 F 13 65.64 33.4
3 93731 M 20 127.98 31.3
4 93738 M 26 33.42 25.1
5 93755 F 26 122.46 42.6
6 93758 F 55 32.52 43.5
7 93760 F 54 119.88 44.1
8 93763 M 40 64.68 20.2
我想画画
sns.lmplot(x='insulin', y='age', hue='sex', data=df)
sns.lmplot(x='totalPF', y='age', hue='sex', data=df)
sns.lmplot(x='insulin', y='totalPF', hue='sex', data=df)
将这些图放在一个网格中,每个图从我的数据框中的不同列获取y轴和x轴。我还想让它为每个性别显示两种不同的颜色和线条。 理想情况下,我可以在一个漂亮的网格中有20多个图形,显示不同的轴组合。 这都是在Jupyter笔记本中完成的
使用for循环,我可以让它绘制我想要的图形,但不是在一个漂亮的网格中。 我还尝试过使用基本的matplotlib子图,但在许多列上进行迭代似乎非常困难。 也可能有一些方法来整理数据框架,以便lmplot和FaceGrid完成所有工作,但我已经尝试了一些方法,我也没有更进一步
您可以使用
PairGrid
获得几乎所需的输出:或者,您可以删除右下轴以消除多余的打印。
g.axes[-1,-1].remove()
否则,如果你更愿意跟随@PaulH的评论,这是正确的。我将这样实施:
相关问题 更多 >
编程相关推荐