matplotlib FacetGrid更改标题

ve7v8dk2  于 2023-05-01  发布在  其他
关注(0)|答案(3)|浏览(148)

我正在尝试在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)

这给了我的图

现在,代替“ActualExternal = 0.0”和“ActualExternal = 1。0”,我想要标题“内部”和“外部”
我希望xlabel显示“Percentage Depth”而不是“ActualDepth”
最后,我想添加一个“缺陷数量”的ylabel。

z9gpfhce

z9gpfhce1#

虽然您可以使用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")

这样做的好处是,无论是1D还是2D小平面,都不需要修改。

wgxvkvu9

wgxvkvu92#

您可以通过g.axes访问FacetGrid(g = sns.FacetGrid(...))的轴。有了它,你可以自由地使用任何你喜欢的matplotlib方法来调整图。

更改标题

axes = g.axes.flatten()
axes[0].set_title("Internal")
axes[1].set_title("External")

更改标签

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

请注意,我更喜欢FacetGrid内部g.set_axis_labelsset_titles方法之上的那些方法,因为它使要标记的轴更加明显。

wz1wpwve

wz1wpwve3#

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

titles = ['Internal','External']

for ax, title in zip(g.axes.flatten(),titles):
    ax.set_title(title)

相关问题