seaborn.displot绘图时标题和x轴标签显示不全的原因及解决办法
问题产生原因
Matplotlib 是 Seaborn 底层依赖的绘图库,它默认的画布边距不会自动适配所有文本元素的尺寸。当你设置的标题内容较长、或者画布尺寸偏小时,顶部、底部的预留边距不足以容纳完整的标题和X轴标签,就会出现内容被截断的问题。
修复方案
你可以选择以下任意一种方案解决,优先推荐第一种自动调整的方案:
- 调用
plt.tight_layout()自动调整布局:在plt.show()之前插入该行代码,Matplotlib会自动计算并调整画布边距、子图间距,保证所有文本元素都可以完整显示。 - 手动调整画布边距:如果你需要更精细的控制,可以使用
plt.subplots_adjust()自定义各方向的边距,示例:plt.subplots_adjust(top=0.9, bottom=0.15),可以根据实际显示效果调整top(顶部边距)、bottom(底部边距)的数值。 - 放大画布尺寸:在调用
sns.displot()时添加height、aspect参数放大画布,额外的空间会自动容纳更长的文本内容,示例:sns.displot(enctimes,kde=True, legend=False, bins=bins, height=6, aspect=1.3)。
修复后的完整代码示例
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt filename = 'MY_FILENAME_GOES_HERE' # 注意提前定义好bins、fileForTitle变量,避免运行报错 bins = 20 fileForTitle = "test.mp4" enctimes=pd.read_csv(filename,skiprows=10) sns.displot(enctimes,kde=True, legend=False, bins=bins).set(title='Encoding Times %s, number frames %d' %(fileForTitle,len(enctimes)),xlabel='usec') # 添加自动调整布局的代码 plt.tight_layout() plt.show()
内容的提问来源于stack exchange,提问作者Shevach Riabtsev
相关产品推荐
相关产品推荐

