重新定位 xlabels

Repositioning of xlabels

在 matlab 中使用我的绘图代码,为什么我仍然无法定位 xlabel?正如您在图片中看到的那样,我需要将 XLabel.Y 位置降低 -0.03。

figure;
h2=bar([mean(o2_ExecNorm(:,:,8)-1,2) mean(o3_ExecNorm(:,:,5)-1,2)]);
set(gca, 'XTickLabel',unique([bench.application]), 'XTick',1:numel(unique([bench.application])))
hold on
axis([0 25 -0.3 2.5])
set(gca,'FontName','AvantGarde')
xticklabel_rotate([],35,[]) 
set(findobj(gca,'Type','text'),'FontSize',14, 'FontWeight','Bold','FontName','courier');
set(gcf, 'color', [1 1 1])
ylabel({'Performance improvement w.r.t -O3 and -O2'},'FontSize',24,'FontWeight','bold');
legend({'w.r.t -O2','w.r.t -O3'})

显然这部分不起作用:

vec_pos = get(get(gca, 'XLabel'), 'Position');
set(get(gca, 'XLabel'), 'Position', vec_pos + [0 -0.03 0]);
set(gca,'YTickLabel', 1:.5:3)
hold off

我认为最简单的解决方案是不使用 xticklabel_rotate。它随着 Matlab R2014b 和新图形引擎的引入而过时。

改为执行以下操作:

ax = gca;
ax.XTickLabelRotation = 35;

在这里有一些进一步的见解:MATLAB R2014b Graphics – Part 1: Features of the New Graphics System

可能新的图形引擎也导致xticklabel_rotate无法正常工作。