MATLAB R2023b中plotmf函数xlabel的fontname指令失效问题咨询
问题原因
plotmf函数绘制隶属度曲线后,会自动给x轴添加标签,并且把该标签的Interpreter属性设为'none'。这就导致你用的TeX格式指令(\fontname{宋体})没法被MATLAB解析,只能原样显示成字符串。而y轴标签没被plotmf改动,保持默认的'tex'解释器,所以字体指令能正常生效。
解决办法
方法1:手动重置xlabel的解释器
设置完xlabel后,把它的Interpreter属性改回'tex',TeX格式指令就能正常解析了:
fis = readfis('tipper'); plotmf(fis,'input',1) xlabel('\fontname{宋体} 论域') set(get(gca,'XLabel'),'Interpreter','tex') ylabel('\fontname{宋体} 隶属度')
方法2:自定义绘制x轴标签
用text函数手动绘制x轴标签,完全自定义内容和格式,避开plotmf的默认设置干扰,还能轻松实现单标签内多字体切换:
fis = readfis('tipper'); plotmf(fis,'input',1) % 获取坐标轴范围,确定标签的位置 x_range = get(gca,'XLim'); y_range = get(gca,'YLim'); % 绘制混合字体的x轴标签 text(mean(x_range), y_range(1)-0.1*diff(y_range), ... '\fontname{宋体} 时间\fontname{Times New Roman} (s)', ... 'HorizontalAlignment','center', ... 'Interpreter','tex'); ylabel('\fontname{宋体} 隶属度')
方法3:修改plotmf函数的默认行为(进阶)
如果需要频繁使用这个功能,可以修改MATLAB自带的plotmf.m文件:找到函数里自动设置xlabel的代码段,把其中的'Interpreter','none'参数删掉,或者改成'Interpreter','tex'。注意:修改系统函数前一定要备份原文件,避免影响其他功能的正常使用。
内容的提问来源于stack exchange,提问作者Soriak
相关产品推荐
相关产品推荐

