学术论文海本图字体大小的精细控制

2024-05-20 13:36:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正试图利用肖伯恩为我的学术论文创作情节。这些图看起来很好,也很容易生成,但有一个问题我有点麻烦,就是在图的字体大小上有精细的控制。

我在纸上的字体大小是9pt,我想确保我的绘图中的字体大小是9pt或10pt。但在seaborn中,字体大小主要是通过字体大小控制的。所以我很难找到合适的字体大小,除非通过反复试验。有没有更有效的方法来做到这一点?

我还想确保字体大小在不同的seaborn图之间是一致的。但并不是所有的seaborn图都有相同的尺寸,所以似乎在所有的图上使用相同的字体比例不一定在这些不同的图上创建相同的字体大小?

我把代码附在下面了。我很感激你对如何为一篇两栏的学术论文编排情节的评论。我的目标是能够控制图形的大小,而不会扭曲字体大小或绘图。我用乳胶写论文。

# Seaborn setting                                                                                                                                              
sns.set(style='whitegrid', rc={"grid.linewidth": 0.1})
sns.set_context("paper", font_scale=0.9)                                                  
plt.figure(figsize=(3.1, 3)) # Two column paper. Each column is about 3.15 inch wide.                                                                                                                                                                                                                                 
color = sns.color_palette("Set2", 6)

# Create a box plot for my data                                                      
splot = sns.boxplot(data=df, palette=color, whis=np.inf,                              
        width=0.5, linewidth = 0.7)

# Labels and clean up on the plot                                                                                                                                                                                                                                                                                              
splot.set_ylabel('Normalized WS')                                                     
plt.xticks(rotation=90)                                                               
plt.tight_layout()                                                                    
splot.yaxis.grid(True, clip_on=False)                                                 
sns.despine(left=True, bottom=True)                                                   
plt.savefig('test.pdf', bbox_inches='tight')                                          

Tags: true绘图columnpltseaborngridcolorpaper
2条回答

你说得对。这是一个记录不清的问题。但是可以在生成绘图后直接更改字体大小参数(与字体比例相反)。检查以下示例:

import seaborn as sns
tips = sns.load_dataset("tips")

b = sns.boxplot(x=tips["total_bill"])
b.axes.set_title("Title",fontsize=50)
b.set_xlabel("X Label",fontsize=30)
b.set_ylabel("Y Label",fontsize=20)
b.tick_params(labelsize=5)
sns.plt.show()

,其结果是:

Different font sizes for different labels

为了使两个图之间的一致性,我认为你只需要确保DPI是相同的。顺便说一下,也可以自定义一点rc dictionaries,因为“font.size”参数存在,但我不太确定如何做到这一点。

注意:而且我也不明白为什么他们要更改轴标签和记号的字体大小变量的名称。似乎有点不直观。

这几乎令人满意,不是吗?在设置上下文时,我找到了最简单的指定方法,例如:

sns.set_context("paper", rc={"font.size":8,"axes.titlesize":8,"axes.labelsize":5})   

这将处理90%的标准绘图使用。如果您希望ticklabels小于axes labels,请将“axes.labelsize”设置为较小的(ticklabel)值,并手动指定axis labels(或其他自定义元素),例如:

axs.set_ylabel('mylabel',size=6)

您可以将其定义为一个函数并将其加载到脚本中,这样就不必记住标准号码,也不必每次都调用它。

def set_pubfig:
    sns.set_context("paper", rc={"font.size":8,"axes.titlesize":8,"axes.labelsize":5})   

当然您可以使用configuration files,但我想整个想法是要有一个简单、直接的方法,这就是为什么上面的方法工作得很好。

注意:如果指定这些数字,则对于所有指定的字体元素,即使设置了sns.set_context中指定的font_scale也将被忽略。

相关问题 更多 >