Python 基于facet在Seaborn FaceGrid中定制标题

Python 基于facet在Seaborn FaceGrid中定制标题,python,seaborn,Python,Seaborn,想要制作一个面网格,变量名作为列,部门作为行,每个小图表都是一个y=value和x=date的散点图 我的数据有点像这样: import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt from datetime import datetime import matplotlib.dates as mdates import random datelist = pd.da

想要制作一个面网格,变量名作为列,部门作为行,每个小图表都是一个y=value和x=date的散点图

我的数据有点像这样:

import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt from datetime import datetime import matplotlib.dates as mdates import random

datelist = pd.date_range(start="march 1 2020", end="may 20 2020", freq="w").tolist()
varlist = ["x", "y", "z", "x", "y", "z", "x", "y", "z", "x", "y", "z"]
deptlist = ["a", "a", "b", "a", "a", "b", "a", "a", "b", "a", "a", "b"]
vallist =  random.sample(range(10, 30), 12)
df = pd.DataFrame({'date': datelist, 'value': vallist, 'variable': varlist, 'department': deptlist})
我想创建一个Seaborn FaceGrid,如下所示:

g = sns.FacetGrid(df, row="department", col="variable", sharey='row')

我想更改Y轴标签以包含部门名称,因此,“部门A”等。但根据我使用的数据,特定部门可能会有所不同。所以我想参数化Y轴标签的设置,用我从g中提取的东西,告诉我映射到某一行的特定变量。我一直在四处挖掘,虽然我确信它存在,但我找不到它。

您可以使用
set\u ylabel()
set\u xlabel
更改特定方面的标签。因此,在您提供的示例中,
department=a | variable=x
facet将为[0,0],下一个标签位于[1,0]

因此,我们可以尝试使用行顺序输入,以确保它们的顺序相同:

rowOrder = ['a','b']
g = sns.FacetGrid(df, row="department", col="variable", sharey='row',row_order=rowOrder)
g = g.map(plt.scatter, "value", "value")
for i in range(len(rowOrder)):
    g.axes[i,0].set_ylabel(rowOrder[i])

谢谢!你知道我想要什么,有一个文档解释了对象结构。。。g包含什么,有什么方法,哪些方法在g轴下,等等等等。这总是徒劳无益。你是怎么做到的?不客气!是的,有些不太一致,但越来越好。我得经常查东西。seaborn在matplotlib上运行,是的,有时候你可以随时检查