MATLAB:尝试在3x2子图中添加共享xlabel,ylabel

时间:2015-06-11 21:33:59

标签: matlab plot graphing

正如标题所说,我要做的事情是相当直接的。我有一个m = 3,n = 2子图的网格。它们代表了测量相同参数的6种不同实验的图表。我想在六个子图的边界上有一个x标签和一个y标签。不幸的是,到目前为止,我还没有找到一种简单的方法来做到这一点。 (xlabel只是在最后一个活动子图下放置一个xlabel)。任何人都知道如何做到这一点?

哦,我如何在带有度数符号的标签中显示摄氏度?(小圆圈......)

3 个答案:

答案 0 :(得分:1)

您可以使用mtit在子图周围创建一个不可见的轴。 mtit返回该轴的句柄,然后您可以为其创建xlabel和ylabel。

示例:

% create sample data
my_data = arrayfun(@(x)rand(10, 2) + repmat([x, 0], 10, 1), 1:6, 'UniformOutput', 0);

figure;
clf
ah = gobjects(6, 1); % use zeros if using an old version of MATLAB
% plot data
for ii = 1:6
    ah(ii) = subplot(3, 2, ii);
    plot(1:10, my_data{ii}(:, 1));
    hold on
    plot(1:10, my_data{ii}(:, 2));
end
% link axes to have same ranges
max_data = max(cellfun(@(x) max(x(:)), my_data));
min_data = min(cellfun(@(x) min(x(:)), my_data));
linkaxes(ah, 'xy')
ylim([min_data, max_data])

% Create invisible large axes with title (title could be empty)
hh = mtit('Cool experiment');
%set(gcf, 'currentAxes', hh.ah)
% make ylabels
ylh = ylabel(hh.ah, 'Temperature [°C]');
set(ylh, 'Visible', 'On')
xlh = xlabel(hh.ah, 'x label');
set(xlh, 'Visible', 'On')

这将生成如下图: Example output

答案 1 :(得分:0)

我不知道您在为每个子情节设置xlabelylabel时遇到的错误。

我也不确定我是否理解过问题。

以下代码使用xlabelylabel生成3x2子图。

在第一种情况下,每个子图有xlabelylabel的不同字符串。

在第二个中,为所有子集设置了相同的xlabelylabel

要在标签上添加“°”符号,只需这样定义char变量即可:

c='°'

然后使用sprintf生成xlabelylabel的字符串。

α=兰迪(100,6,20)

figure

% Each subplot with its own xlabel and ylabel
for i=1:6
   hs(i)=subplot(3,2,i);
   plot(a(i,:))
   c='°'
   str=sprintf('Temp [C%c]',c)
   xlabel([str ' ' num2str(i)])
   ylabel(['Subplot ' num2str(i)])
   grid on
end

figure

% The same xlabel and ylabel for all the subplot
c='°';
x_label_str=sprintf('Temp [C%c]',c)
y_label_str='Same for all'

for i=1:6
   hs(i)=subplot(3,2,i);
   plot(a(i,:))
   xlabel(x_label_str)
   ylabel(y_label_str)
   grid on
end

图1:每个子图的不同xlabel,ylabel

enter image description here

图2:每个子图的相同xlabel,ylabel

enter image description here

希望这有帮助。

答案 2 :(得分:0)