如何增大Seaborn relplot绘制图表的标题字体大小
问题原因
你遇到报错、参数不生效的核心原因有两个:
sns.relplot返回的是FacetGrid对象,不是普通matplotlib的Axes对象,它没有单数形式的set_title方法,因此直接调用会报属性错误。FacetGrid.set()方法仅支持配置坐标轴标签、刻度、网格这类坐标轴级属性,不支持传入标题字体相关参数,因此直接加font_size不会生效。
正确解决方法
使用FacetGrid自带的复数形式方法set_titles()即可设置标题及对应字体大小,针对无分面的单散点图场景完全适配,还可以额外调整间距避免标题和绘图内容重叠,修改后的完整代码如下:
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt def plot_all_seaborn(x,y,types,x_axis, y_axis, title): tuples = only_floats(x,y,types) x,y,types_new = zip(*tuples) frame = pd.DataFrame({x_axis:x,y_axis:y,'Model':types_new}) g = sns.relplot(data=frame, x=x_axis, y=y_axis, hue="Model", style="Model", s=500 ) # 设置标题和字体大小 g.set_titles(title, fontsize=20) # 可选:调整顶部边距,避免大字号标题和图例/绘图区重叠 g.fig.subplots_adjust(top=0.9) plt.show()
如果是没有分面的单图场景,也可以直接取FacetGrid下的坐标轴对象,用matplotlib原生方法设置标题:
# 单图场景下取第一个(也是唯一一个)坐标轴设置标题 g.axes[0][0].set_title(title, fontsize=20)
注意:如果是多列/多行分面的relplot,
set_titles()方法会自动给所有子图设置对应标题,比逐轴设置效率更高。
内容的提问来源于stack exchange,提问作者Emil
相关产品推荐
相关产品推荐

