sns.boxplot(data=df, width=0.5)
plt.title(f'Distribution of scores for initial and resubmission\
\nonly among students who resubmitted at all.\
\n(n = {df.shape[0]})')
我想使用更大的字体,并在顶部白色边缘留出更多空间,以便标题不会被塞进。令人惊讶的是,尽管有一些严肃的谷歌搜索,我完全无法找到该选项!
答案 0 :(得分:0)
您遇到的基本问题是多行标题太高,并且会在页面上呈现#34;。
为您提供的一些选择:
最省力的解决方案可能是使用tight_layout()
。 plt.tight_layout()
操纵子图位置和间距,以便标签,刻度和标题更合适。
如果这还不够,还可以查看plt.subplots_adjust()
,它可以控制在一个或多个子图周围使用多少空格;您可以在一时修改一个方面,并保留所有其他设置。在您的情况下,您可以使用plt.subplots_adjust(top=0.8)
。
如果您要为出版物或类似作品生成最终数字,您可能希望进行大量调整以完善它。在这种情况下,您可以使用add_axes
精确控制(子)绘图位置(请参阅此示例https://stackoverflow.com/a/17479417)。
这是一个例子,有6行标题强调。左侧面板显示默认值 - 标题的一半被剪掉。除了顶部之外,右侧面板的所有测量值都相同;中间已经自动删除了所有方面的空白。
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
data = 55 + 5* np.random.randn(1000,) # some data
vlongtitle = "\n".join(["long title"]*6) # a 6-line title
# using tight_layout, all the margins are reduced
plt.figure()
sns.boxplot(data, width=0.5)
plt.title(vlongtitle)
plt.tight_layout()
# 2nd option, just edit one aspect.
plt.figure()
sns.boxplot(data, width=0.5)
plt.title(vlongtitle)
plt.subplots_adjust(top=0.72)