MATLAB画图中英文不同字体混合显示标题、坐标轴标签(完美解决方案) | 您所在的位置:网站首页 › 图标坐标轴标题怎么写 › MATLAB画图中英文不同字体混合显示标题、坐标轴标签(完美解决方案) |
MATLAB是吾等理工狗常用的求生工具。在画图时对中英文标题均支持较好,但学术出版物常常对字体有所要求。对于英文出版物一切好说,设置成相应字体即可。而对于中文出版物、中文毕业论文、报告,则常常需要混合显示中英文,且其中变量往往需要斜体、加粗显示。而且要求的中英文字体并不相同。譬如,常常要求的中文字体为宋体,英文字体为Times New Roman。Word等文本编辑软件可分别设置中英文,应对这种情况手到擒来。而MATLAB虽然亦可同时设置中英文字体,但是需要冗长的代码实现。本文为了应对这种情况,站在前人肩膀上,搞出了一个完美解决方案——混合字体。 为了说明该解决方案,首先介绍一下MATLAB中设置图片标注字体的方式。 MATLAB设置图片标注字体的方式MATLAB设置图片标注字体通常有三种方式: 设置‘fontname’属性 利用这种方法可以设置一个title、label、text等标注的字体,也可对直接设置整个图片的字体,但是对不同中英文字体混合标注的情况无能为力。 title('趋势图', 'FontName','宋体'); % 单独设置 set(gca,'fontname','times') %设置整个图片的字体灵活设置‘fontname’属性 在使用title、label、text等命令时,还可以灵活设置fontname属性,从而可以实现不同中英文字体的混合标注: title('\fontname{宋体}变量\fontname{Times New Roman}x_{T}\fontname{宋体}趋势图')但是这种方法原使得原本十分简短的程序的长度大大增加,结构复杂了好几倍。偶尔用几次还可以,但是每次画图都要这样,实在是让人烦不胜烦。但这是目前除本文之外,我发现的唯一一个可以实现MATLAB画图时不同中英文字体混合标注的方法。 设置默认字体 MATLAB还对各种属性提供了更改默认设置的接口。其中,就可以更改坐标轴与文字的字体: set(0,'defaultAxesFontName', 'Times New Roman'); %坐标轴 set(0,'defaultTextFontName', 'Times New Roman'); %文字这种方法是最全局的设置,但同样其控制也最为粗糙,默认仅能实现一种字体的设置。而许多英文字体,例如Times New Roman等,是没有中文字符的,因此若将默认字体设置成Times New Roman,则中文会显示成乱码…… 在我上网冲浪冲到疲惫之后,终于找到了一个突破口:将不同中英文字体混合起来,将混合字体设置为默认,从而完美实现中英文不同字体混合显示。 逻辑十分清晰地,整个操作过程分为三步:寻找中英文目标字体、将他们混合成新字体、将新字体导入MATLAB中。 OK,开整! 找到中英文目标字体我的中文与英文目标字体分别是宋体和Times New Roman,系统字库中就有,十分轻易地就找到了。 在win11的搜索栏搜索“字体”,就可以打开系统的字体库,将想要的字体直接复制到文件夹下,就可以得到相应的字库文件。 经过一番疲惫的冲浪,在网上找到的一个傻瓜式字体混合工具:魔兽世界字体合并/补全工具。不得不说,十分好用!虽然我不是艾泽拉斯大陆的旅人,但不影响我借鉴异世界朋友们的成果… 接下来就是按照说明傻瓜操作,分别得到了四种格式的Times New Roman与宋体的字库文件。 MATLAB的字库文件位于路径"\sys\java\jre\win64\jre\lib\fonts"下,将得到的四个字库文件复制到该路径下,重启MATLAB即可在MATLAB中使用相应字体。将新的混合字体设置为全局默认,即可完美实现中英文不同字体混合显示,而不用再一次次地写\fontname了。 set(0,'defaultAxesFontName', 'TimesSimSun'); %坐标轴 set(0,'defaultTextFontName', 'TimesSimSun'); %文字 title({'spaceDRO地月 \itspaceDRO地月', '\rm\bfspaceDRO地月 \itspaceDRO地月'})最后看一下效果,正体、斜体、粗体、粗斜体都正常显示: 字体文件已上传到阿里云盘,链接见评论。 |
CopyRight 2018-2019 实验室设备网 版权所有 |