Python,Seaborn FacetGrid更改标题

jlt*_*199 8 python matplotlib seaborn

我想在Seaborn创建一个FacetGrid

我的代码目前是:

g = sns.FacetGrid(df_reduced, col="ActualExternal", margin_titles=True)
bins = np.linspace(0, 100, 20)
g.map(plt.hist, "ActualDepth", color="steelblue", bins=bins, width=4.5)
Run Code Online (Sandbox Code Playgroud)

这给了我的图

我的FacetGrid

现在,而不是"ActualExternal = 0.0"和"ActualExternal = 1.0"我想要标题"内部"和"外部"

并且,而不是"ActualDepth"我希望xlabel说"Percentage Depth"

最后,我想添加一个"缺陷数量"的标签.

我尝试过谷歌搜索,并尝试了一些东西,但到目前为止还没有成功.你能帮帮我吗?

谢谢

Imp*_*est 11

您可以通过访问FacetGrid(g = sns.FacetGrid(...))的轴g.axes.有了这个,你可以自由地使用任何matplotlib方法来调整情节.

更改标题:

axes = g.axes.flatten()
axes[0].set_title("Internal")
axes[1].set_title("External")
Run Code Online (Sandbox Code Playgroud)

更改标签:

axes = g.axes.flatten()
axes[0].set_ylabel("Number of Defects")
for ax in axes:
    ax.set_xlabel("Percentage Depth")
Run Code Online (Sandbox Code Playgroud)

请注意,我更喜欢上面FacetGrid的内部g.set_axis_labelsset_titles方法,因为它更明显地标记了哪些轴.

  • @ImportanceOfBeingErnest使用`g.set_axis_labels`方法而不是直接修改轴上的标签属性. (3认同)

jak*_*vdp 10

虽然您可以使用matplotlib命令遍历轴并单独设置标题,但使用seaborn的内置工具来控制标题更为清晰.例如:

# Add a column of appropriate labels
df_reduced['measure'] = df_reduced['ActualExternal'].replace({0: 'Internal',
                                                              1: 'External'}

g = sns.FacetGrid(df_reduced, col="measure", margin_titles=True)
g.map(plt.hist, "ActualDepth", color="steelblue", bins=bins, width=4.5)

# Adjust title and axis labels directly
g.set_titles("{col_name}")  # use this argument literally
g.set_axis_labels(x_var="Percentage Depth", y_var="Number of Defects")
Run Code Online (Sandbox Code Playgroud)

无论您是否具有1D或2D刻面,这都具有不需要修改的优点.


Jud*_*AYE 6

设置多个标题的另一种方法是:

titles = ['Internal','External']

for ax, title in zip(g.axes.flatten(),titles):
    ax.set_title(title)
Run Code Online (Sandbox Code Playgroud)