我目前正在 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=
选项,但是当我使用它时,这会在多面图的每个子图上方放置相同的标题。
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()
)