如何用Python Pandas和Matplotlib控制图表与文本标签的相对大小?
Pandas+Matplotlib柱状图X轴标签过大的PDF输出解决方案
问题背景
生成的柱状图存在X轴标签相对于图表整体尺寸过大的问题,有两种解决思路:
- 保持标签字号不变,增大图表整体尺寸(优先选择)
- 保持图表尺寸不变,缩小标签字号
需输出为PDF格式,当前渲染宽度仅约400像素,且发现dpi参数对PDF无效(PDF为矢量格式),原代码如下:
# data 是 Pandas DataFrame,包含'age'列 data_age = data['age'].value_counts().sort_index() plot = data_age.plot.bar() pplt.savefig('age.pdf')
(pplt来自import matplotlib.pyplot as pplt)
优先方案:增大图表尺寸(适配PDF)
PDF是矢量格式,无需依赖dpi参数,直接通过figsize设置图表的矢量尺寸即可解决标签比例失调问题,同时保留标签字号。修改后的代码:
import matplotlib.pyplot as pplt # data 是 Pandas DataFrame,包含'age'列 data_age = data['age'].value_counts().sort_index() # 自定义图表尺寸,示例为宽10英寸、高6英寸,可按需调整 plot = data_age.plot.bar(figsize=(10, 6)) # 可选:防止标签被PDF边界裁剪 pplt.savefig('age.pdf', bbox_inches='tight')
关键说明
figsize=(w, h):以英寸为单位定义图表的基础尺寸,PDF会完整保留这个矢量尺寸,渲染时标签比例会自动协调。bbox_inches='tight':避免X轴标签或标题被截断,建议添加。
备选方案:缩小标签字号
若需保持图表尺寸不变,可直接调整X轴标签的字号:
plot = data_age.plot.bar() # 设置X轴标签字号,示例为8号,可按需修改 plot.tick_params(axis='x', labelsize=8) pplt.savefig('age.pdf')
内容的提问来源于stack exchange,提问作者user2138149
相关产品推荐
相关产品推荐

