一种方法使用g.axes[row, column].set_title(...).
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
np.random.seed(1234)
df = pd.DataFrame({"exper": np.random.randint(1, 11, 50),
"wage": np.random.randint(100, 200, 50),
"female": np.random.randint(0, 2, 50)})
df["wage"] += df["exper"] * 10
g = sns.lmplot(x="exper", y="wage", hue="female", col="female", data=df, sharey=True)
g.axes[0, 0].set_title("Male")
g.axes[0, 1].set_title("Female")
g.axes[0, 1].tick_params(labelleft=True) # to set the ticks when sharey=True
g.fig.tight_layout()
plt.show()

另一种方法是临时重命名0为male和。并将列名从更改为:1femalefemalegender
df1 = df.replace({"female": {0: "male", 1: "female"}}).rename(columns={"female": "gender"})
g = sns.lmplot(x="exper", y="wage", hue="gender", col="gender", data=df1, sharey=True)
g.axes[0, 1].tick_params(labelleft=True)
g.fig.tight_layout()
plt.show()
