如何使用seaborn.objects.Plot.facet图添加一般标题

问题描述 投票:0回答:1

我目前正在 Python 中使用 seaborn 库,从名为

averages
且列为
['Name', 'Period', 'Value', 'Solver']
的 pandas 数据帧创建分面堆叠条形图。

这是我用来创建我想要的绘图的代码。

p = so.Plot(data = averages, x = 'Period', y = 'Value', color = 'Name').add(so.Bar(), so.Stack(), suptitle='Inventory levels')
p = p.facet(col='Solver', order=['spse', 'mp2', 'mels'])

我正在寻找一种方法来向绘图添加一般标题每个子图上方的标题,就像函数

matplotlib.pyplot.suptitle
函数所做的那样。

我知道函数

seaborn.objects.Plot.label
有一个
title=
选项,但是当我使用它时,这会在多面图的每个子图上方放置相同的标题。

python seaborn seaborn-objects
1个回答
1
投票

您可以使用

so.Plot.on
提供现有的 Matplotlib 图形或轴来绘制绘图。这使您可以访问可以添加字幕的底层
matplotlib.figure.Figure
对象。

import matplotlib.pyplot as plt
import seaborn.objects as so
import pandas as pd

df = pd.DataFrame({
    "x": [1, 2, 3, 4, 5, 1, 2, 3, 4, 5],
    "y": [1, 2, 3, 4, 5, 1, 2, 4, 8, 16],
    "group": ["a", "a", "a", "a", "a", "b", "b", "b", "b", "b"],
})

fig = plt.Figure()
fig.suptitle("Suptitle")

(
    so.Plot(df, x="x", y="y")
    .add(so.Line())
    .facet(col="group")
    .on(fig)
    .plot()
)
© www.soinside.com 2019 - 2024. All rights reserved.