首页 > 解决方案 > 如何在 Seaborn 中叠加不同类型的图表?

问题描述

我正在尝试使用不同的 y 轴将两个图形放入同一个图中,并且当我使用相同类型的图(例如,两个条形图或两个线图)时它工作正常。使用此代码

fig, graph = plt.subplots(figsize=(75,3))
sns.lineplot(x='YearBuilt',y='SalePrice',ax=graph,data=processed_data,color='red')
graph2 = graph.twinx()
sns.lineplot(x='YearBuilt', y='AvgOverallQual',ax=graph2,data=processed_data,color='teal')

我得到这个

在此处输入图像描述

但是当我尝试使用不同的种类时,像这样:

fig, graph = plt.subplots(figsize=(75,3))
sns.barplot(x='YearBuilt',y='SalePrice',ax=graph,data=processed_data,color='red')
graph2 = graph.twinx()
sns.lineplot(x='YearBuilt', y='AvgOverallQual',ax=graph2,data=processed_data,color='teal')

我的图表看起来像:

在此处输入图像描述

如何在 Seaborn 中叠加不同类型的图表?

标签: pythonplotgraphoverlayseaborn

解决方案


seabornbarplot是一个分类图。第一个条将位于位置 0,第二个位于位置 1,依此类推。 Alineplot是数字图;它会将所有点放在数字坐标给定的位置。

在这里,似乎根本不需要使用 seaborn。由于 matplotlibbar绘图也是数字的,因此仅在 matplotlib 中执行此操作将为您提供所需的叠加

fig, ax = plt.subplots(figsize=(75,3))
ax.bar('YearBuilt','SalePrice', data=processed_data, color='red')
ax2 = ax.twinx()
ax2.plot('YearBuilt', 'AvgOverallQual', data=processed_data, color='teal')

推荐阅读