台式电脑

怎么样在电脑打大的美术字体(Seaborn 绘图中设置字体及大小)

大家好最近在使用Seaborn绘图时,把我整不会了。想着Seaborn是基于Matplotlib,习惯于使用Matplotlib那一套设置字体大小的方法,但在使用Seaborn时,多少有一些不同。今天让我们一起看看吧~

设置seaborn绘图中的字体

Seaborn基于Matplotlib,Matplotlib基于Python,Python运行于电脑系统中。

因此,要在Seaborn中使用某款字体,该字体要满足以下条件:

字体已安装在系统中;Python能检索到此字体;Matplotlib字体缓存中能检索到此字体;绘图时在Seaborn中设置使用该字体。1.1在电脑上安装字体

怎么样在电脑打大的美术字体(Seaborn 绘图中设置字体及大小)

以「文泉驿微米黑」字体为例,下载到的字体安装包为「文泉驿微米黑.ttf」,双击会自动打开系统自带的字体管理器,点击安装既可。

以上操作在Windowns10和Ubuntu上都可实现,MacOS没用过,应该也差不多流程。

1.2让Python能检索到字体

如果安装字体时没有运行Python,应该就不用做什么。

如果安装字体时正在运行Python,则需要重启Python环境。用JupyterNotebook,直接重启内核既可。

1.3更新Matplotlib字体缓存

不是系统安装了字体就能在Seaborn和Matplotlib中使用,需要先更新Matplotlib的字体缓存。代码如下。这里只需用到matplotlib.font_manager包,由于后面要做图,这里同时加载pandas、seaborn、matplotlib。

importpandasaspdimportseabornassnsfrommatplotlibimportpyplotaspltimportmatplotlib.font_managerasfont_manager%matplotlibinlinefont_manager._rebuild()1.4在Seaborn中使用字体

要使用字体,首先要知道字体名称。用以下命令可以查看Matplotlib的字体缓存中的字体名称。

forfontinfont_manager.fontManager.ttflist:print(font)...

以「文泉驿微米黑」为例,找到字体名称叫「WenQuanYiMicroHei」。之后在字体参数中可指定为此值。

Seaborn是基于Matplotlib,所以设置Seaborn字体参数,就是设置Matplotlib。以下命令查看Matplotlib的默认字体。

print(plt.rcParams["font.family"])print(plt.rcParams['font.sans-serif'])['sans-serif']['DejaVuSans','BitstreamVeraSans','ComputerModernSansSerif','LucidaGrande','Verdana','Geneva','Lucid','Arial','Helvetica','AvantGarde','sans-serif']

rcParams是Matplotlib运行时的参数配置字典,包含各项设置。以上打印出与字体设置相关的两个键的值。

其中font.family的值为默认使用的字体族,当前为sans-serif。Matplotlib推荐的字体族只有四种:fantasy,monospace,sans-serif,serif。

font.sans-serif的值为字体族sans-serif所包含的字体名称的列表,绘图时Matplotlib会在该列表中从前往后顺序优先使用靠前的字体。

所以要使用指定的字体,可以将字体名加入字体族sans-serif所包含的字体列表中,放在列表最前,然后赋值给font.sans-serif。

其实还有两种设置字体的办法,但不推荐:

将font.family的值改为指定字体名称。不推荐原因:这里更改的是默认字体族,而Matplotlib推荐的字体族只有四种。而且一个字体族包含若干字体,当优先使用字体无法显示内容,Matplotlib会使用次优先字体。如果将字体族指定为单一字体,那Matplotlib也就只能使用这一种字体。使用seaborn.set()函数中的font参数指定字体。不推荐原因:这个方法其实修改的也是font.family字体族,不推荐理由同上。

办法找到了,下面简单实操。具体设置就是,通过使用seaborn.set()函数中的rc参数,来修改Matplotlib的rcParams中的sans-serif字体列表。

tips=pd.read_csv('seaborn-data-master/tips-zh.csv')rc={'font.sans-serif':['WenQuanYiMicroHei','DejaVuSans','BitstreamVeraSans']}sns.set(context='notebook',style='ticks',rc=rc)g=sns.relplot(x='账单',y='小费',data=tips)Seaborn 绘图中设置字体及大小

设置Seaborn中字体大小

Seaborn绘图中设置字体大小的方法有两种:

使用seaborn.set()函数中的font_scale参数,此方法以选定的seaborn样式中的字体大小为基准,将字体放大指定的倍数。在各种文字设置函数中,使用fontsize参数指定字体大小。2.1使用font_scale参数设置字体大小

很简单,给font_scale赋值一个数,seaborn会自动放大字体。

简单示例如下图及代码。图中将内置样式的字体放大2倍。

sns.set(context='notebook',style='ticks',font_scale=2,rc=rc)ax=sns.scatterplot(x='账单',y='小费',hue='性别',data=tips)Seaborn 绘图中设置字体及大小

2.2使用fontsize参数设置字体大小

Seaborn绘制图像分为FacetGrid级图和ax级图。此方法只适用于ax级图。

在以下函数中使用fontsize参数指定不同位置的字体的大小,ax变量为ax级图对象,以设置为14号字为例:

ax.set_xticklabels(fontsize=14),设置X座标轴刻度标签字体ax.set_yticklabels(fontsize=14),设置Y座标轴刻度标签字体ax.set_ylabel(fontsize=14),设置Y坐标轴标签字体ax.set_xlabel(fontsize=14),设置X坐标轴标签字体ax.set_title(fontsize=14),设置标题字体ax.legend(title="性别",fontsize=14,title_fontsize=14),设置图例标题、图例标题字体大小、图例字体大小

简单实操见下图及代码。

ax=sns.scatterplot(x='账单',y='小费',hue='性别',data=tips)x=[-40,-20,0,20,40]ax.set_xticks(x)xlabs=[-40,-20,0,20,40]ax.set_xticklabels(xlabs,fontsize=14)#设置X座标轴刻度标签字体y=[0,2,4,6,8,10]ax.set_yticks(y)ylabs=[0,2,4,6,8,10]ax.set_yticklabels(ylabs,fontsize=14)#设置Y座标轴刻度标签字体ax.set_ylabel('小费',fontsize=14)#设置Y坐标轴标签字体ax.set_xlabel('账单',fontsize=14)#设置X坐标轴标签字体ax.set_title('简单示例图',fontsize=14)#设置标题字体ax.legend(title="性别",fontsize=12,title_fontsize=14)#设置图例标题、图例标题字体大小、图例字体大小Seaborn 绘图中设置字体及大小

作者:王澈

相关新闻

返回顶部