Matlab 使用条形图时右侧的空白

Matlab 使用条形图时右侧的空白,matlab,matlab-figure,Matlab,Matlab Figure,我正在使用以下代码保存一个数字: fig1=figure('visible','off'); b = bar(bar_res); x={'a' ;'b' ;'c'; 'd' ;'e'; 'f' ;'g'; 'h';... 'i'; 'j' ;'k'; 'l'; 'm'; 'n' ;'o'; 'p' ;'q' ;'r'; 's';... 't';'u'}; set(gca,'XTickLabel',x,'XTick',1:21); rotateXLabels( gca, 90

我正在使用以下代码保存一个数字:

fig1=figure('visible','off');
b = bar(bar_res);
x={'a' ;'b' ;'c'; 'd' ;'e'; 'f' ;'g'; 'h';...
     'i'; 'j' ;'k'; 'l'; 'm'; 'n' ;'o'; 'p' ;'q' ;'r'; 's';...
     't';'u'};
set(gca,'XTickLabel',x,'XTick',1:21);
rotateXLabels( gca, 90 );
with=char('Res with dash');
without=char('Res without dash');
legend('Reference',with,without,'Location','northwest');
set(gca,'FontSize',16);
y=ylabel('Number of trials','rot',90,'FontSize',18);
set(y,'Units','Normalized','Position',[-0.15, 0.5, 0]);
savefig('a.fig');
saveas(gca, 'a.png');
但我不知道为什么右边会有额外的空白,如下图所示:


只需使用
xlim
设置x限制即可:

set(gca,'XLim',[0 numel(x)+1]);
例如:

fig1 = figure('visible','on');
b = bar(randi(10,21,1).');
x = {'a' ;'b' ;'c'; 'd' ;'e'; 'f' ;'g'; 'h';...
     'i'; 'j' ;'k'; 'l'; 'm'; 'n' ;'o'; 'p' ;'q' ;'r'; 's';...
     't';'u'};
set(gca,'XTick',1:21);
set(gca,'XTickLabel',x);
set(gca,'XLim',[0 numel(x)+1]);
% rotateXLabels( gca, 90 );
with = char('Res with dash');
without = char('Res without dash');
legend('Reference',with,without,'Location','northwest');
set(gca,'FontSize',16);
y = ylabel('Number of trials','rot',90,'FontSize',18);

顺便说一下,如果您有MatlabR2014B或更高版本,则不再需要
RotateLabels
。只需使用:

ax = gca;
ax.XTickLabelRotation = 90;

一个简单的解决方案可能是调用
axis tight
。但是,这可能不是您想要的结果,因为它确实删除了绘图边界处的小空格。

您能给我们展示一下
条形图
的样子吗,这样我们就可以重现这个问题了?这可能只是设置x轴限制的问题,例如,
xlim([0 21])
。该边距是在Matlab绘图中还是仅存在于保存的图像中?@waywewalk不,我的问题不同。另一个问题是关于将fig保存为pdf时的空白,我已经知道这个问题。但在我的例子中,问题是我在图像中的问题中用红色突出显示的空白。@AnderBiguri是的,它在Matlab图形绘图和保存的图像中都存在。请回答另一个快速问题。你知道如何使图例中的文字只有一行吗?就像在我的例子中,有三个单词,我在图例中有两个值,因此图例高度变为四行。我只想写两行(每行一行)。我在@shepherd这里发布了一个问题,类似于
legend('orientation','horizontal')
就可以了。这将图例改为彼此并排,而不是彼此重叠。但文本仍有两行。我认为这可能与图例框的宽度和高度有关?请发布一个新问题,我们将解决它。因为现在,我甚至不能重现这个问题。请在新问题中给出一个简单的例子。