如何在 Seaborn 中叠加两个图表?
Posted
技术标签:
【中文标题】如何在 Seaborn 中叠加两个图表?【英文标题】:How can I overlay two graphs in Seaborn? 【发布时间】:2021-08-10 06:40:32 【问题描述】:我的数据中有两列我希望将它们放在同一个图表中。我怎样才能保留两个图的标签。
【问题讨论】:
不清楚这个问题在问什么。什么样的图表?您可以使用 seaborn 制作多种图表,正确的方法会因您正在做的事情而有所不同。变量之间的关系是什么? “保留标签”是什么意思?您希望如何区分这两个变量?在任何情况下,如果会有一个普遍的答案,这将是一个关于 matplotlib 的答案,而不是 seaborn。 (1) 任何类型的图表 (2) 当然 (3) 标签仍然存在。两个图的轴标签例如 (4) 颜色例如 如前所述,这取决于图形的类型。在这个相关问题中,我给出了一个通过设置FacetGrid
覆盖regplot
s 并通过map()
ing 添加层的示例。 ***.com/questions/48145924
【参考方案1】:
对单个轴进行操作的 seaborn 函数可以将一个轴作为参数。
例如,seaborn.kdeplot
的文档包括:
ax : matplotlib axis, optional
Axis to plot on, otherwise uses current axis
如果你这样做了:
df = function_to_load_my_data()
fig, ax = plt.subplots()
你可以这样做:
seaborn.kdeplot(df['col1'], ax=ax)
seaborn.kdeplot(df['col2'], ax=ax)
【讨论】:
谢谢,唯一的缺点是标签不适用于两个图表。 @DavoudTaghawi-Nejad 你有ax
对象,所以你可以在那个时候做任何事情,真的。
在这种情况下如何添加图例?
@famargar matplotlib.org/tutorials/intermediate/legend_guide.html【参考方案2】:
一种解决方案是引入辅助轴:
fig, ax = plt.subplots()
sb.regplot(x='round', y='money', data=firm, ax=ax)
ax2 = ax.twinx()
sb.regplot(x='round', y='dead', data=firm, ax=ax2, color='r')
sb.plt.show()
【讨论】:
在这种情况下有一个图例可能会有所帮助。为此,您可以在 seaborn 函数中使用标签参数,但显然您需要在每个绘图函数之后调用 plt.legend()【参考方案3】:这些数据是关于 Private vs Public 拼贴数据,但可以工作,因为我们可以看到我们将所有全局参数加载到 seaborn 对象,然后我们将图表映射到同一个窗格。
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv('College_Data',index_col=0)
g = sns.FacetGrid(df,hue='Private',palette='coolwarm',size=6,aspect=2)
g.map(plt.hist,'Outstate',bins=20,alpha=0.7)
See Chart
【讨论】:
以上是关于如何在 Seaborn 中叠加两个图表?的主要内容,如果未能解决你的问题,请参考以下文章