如何在pandas.DataFrame.plot()生成的图表中设置标题字号?
实现方法
pandas的df.plot()是对matplotlib绘图接口的轻量封装,所有matplotlib支持的样式配置都可以正常集成到这个调用流程里,调整标题字号不需要改写原有绘图逻辑,共有3种适配不同场景的实现方式:
方法1:捕获Axes返回值直接配置(通用无版本依赖)
df.plot()会返回当前图表的matplotlib Axes实例,把返回值保存下来后,就可以直接调用原生方法修改标题样式,和原有绘图参数完全兼容:
import pandas as pd import numpy as np df = pd.DataFrame(np.random.rand(3,3), columns=['A','B','C']) df['Name'] = ['Lily','Mary','Joan'] # 捕获plot返回的Axes对象 ax = df.plot( x='Name', kind='barh', stacked=True, mark_right=True, figsize=(10,6), title='Distribution of Tags across Participants' ) # 自定义标题字号、间距等全部支持的样式 ax.set_title( 'Distribution of Tags across Participants', fontsize=16, pad=20 )
这种方式灵活性最高,兼容所有matplotlib支持的标题配置项,不存在pandas版本兼容问题。
方法2:在plot调用时直接传字典配置标题
你之前考虑给title参数传入字典配置的思路完全可行。pandas会把title参数的内容透传给matplotlib的set_title方法,而matplotlib原生支持通过字典结构同时传入标题文本和全部样式参数,不需要把绘图逻辑拆成两步:
df.plot( x='Name', kind='barh', stacked=True, mark_right=True, figsize=(10,6), title={ 'label': 'Distribution of Tags across Participants', 'fontsize': 16, 'fontweight': 'bold' } )
注意:字典结构中必须用
label键对应实际显示的标题文本,其余键直接填写matplotlib支持的标题样式参数(字号、颜色、字重等)即可。不要给title传列表格式的配置,matplotlib无法识别这类结构。
方法3:全局统一设置标题字号(适配批量绘图场景)
如果需要为所有生成的图表统一配置标题字号,可以在绘图前通过matplotlib的全局参数一次性设置,后续调用df.plot()生成的图表会自动应用这个配置,不需要单独给每个图设置标题样式:
import matplotlib.pyplot as plt # 全局配置默认标题字号 plt.rcParams['axes.titlesize'] = 16 df.plot( x='Name', kind='barh', stacked=True, mark_right=True, figsize=(10,6), title='Distribution of Tags across Participants' )
注意事项
- 原有代码中的
mark_right是pandas堆叠条形图的专属配置参数,和matplotlib的标题样式配置无冲突,不需要修改或移除。 - 不需要把整个绘图流程改写为纯matplotlib代码,pandas的封装已经预留了参数透传通道,可以直接集成所有matplotlib的原生能力。
内容的提问来源于stack exchange,提问作者Paw in Data
相关产品推荐
相关产品推荐

