python - 绘制多个子图,每个子图都显示使用 Seaborn 的 pandas DataFrame 的两列之间的关系
问题描述
我有一个熊猫 数据框,如下所示:
df=pd.DataFrame({'depth':[499,500,501,502,503],'parameter1':[25,29,24,23,25],'parameter2':[72,80,65,64,77]})
我希望在同一图表下绘制多个(在这种情况下为两个)seaborn 线图,作为子图。我想在x 轴上保持深度参数不变,但根据其他列值改变y 轴参数。
sns.relplot(x='depth',y="parameter1",kind='line',data=df)
sns.relplot(x='depth',y="parameter2",kind='line',data=df)
我已经尝试使用seaborn.FacetGrid()
,但我没有得到正确的结果。
让我知道如何将这些图绘制为单个图下的子图,而无需单独定义它们。
解决方案
要使用FacetGrid
,您必须使用 将数据框转换为“长格式” melt()
。
df=pd.DataFrame({'depth':[499,500,501,502,503],'parameter1':[25,29,24,23,25],'parameter2':[72,80,65,64,77]})
df2 = df.melt(id_vars=['depth'])
g = sns.FacetGrid(data=df2, col='variable')
g.map_dataframe(sns.lineplot, x='depth', y='value')
请注意,可以更简单地使用relplot
而不是创建FacetGrid
“手动”来实现相同的输出
sns.relplot(data=df2, x='depth', y='value', col='variable', kind='line')
推荐阅读
- python - 基于数据帧中多个条件的累积和
- java - URL Shortner 算法总是为相同的 URL 返回相同的值
- javascript - Javascript - 使局部变量像全局变量一样
- c++ - 操作数组
- excel - 在表格excel上查找
- c++ - 测试用例之间的不同打印格式
- python - 当一个主题太宽而另一个主题很窄时,如何平衡两个主题的数据集?
- c - 理解程序的行为
- java - 使用 AssetManager 打开一个 textFile 并将其分配给 InputStream
- python-3.x - Python:在不退出驱动程序的情况下对多个 URL 使用 Selenium