Как выровнять xlabels и ylabels в подзаговоре в MATLAB - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть следующий код:

  mean_h =[11.9877,13.3937,16.1717];
   std_h = [12.5379,10.2732,10.8000];
    subplot(2,1,1)
   hold on
    h = bar(1:3,mean_h,0.2);
   errorbar(1:3,mean_h,std_h,'s','MarkerSize',10,...
   'MarkerEdgeColor','red','MarkerFaceColor','red');
   name = {'4 mics','9 mics','24 mics'};
    set(gca,'XTick',[1 2 3],'XTickLabel',{'4 mics','9 mics','24 mics'});
   set(gca,'fontsize', 21);

  legend({'mean_{hor}', 'std_{hor}'});
  grid on
  xlabel(' 3 different subsets of horizontal microphone pair combinations of 
   microphone array 3');
   ylabel('Mean/stds rmse`s [°]');



 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %%% Mean and standard devaiation for vertical rmse's of microphone array 3
  mean_v =[7.3022,11.3737,16.2675];
 std_v =[6.2369,9.9813,10.3599];

subplot(2,1,2)
hold on
h = bar(1:3,mean_v,0.2);
errorbar(1:3,mean_v,std_v,'s','MarkerSize',10,...
'MarkerEdgeColor','red','MarkerFaceColor','red');
name = {'4 mics','9 mics','24 mics'};
set(gca,'XTick',[1 2 3],'XTickLabel',{'4 mics','9 mics','24 mics'});
set(gca,'fontsize', 21);
 legend({'mean_{ver}', 'std_{ver}'});

  grid on
  xlabel('3 different subsets of vertical microphone pair combinations of 
  microphone array 3');
  ylabel('Mean/stds rmse`s [°]');

Теперь, когда я строю эти два вспомогательных графика, я сталкиваюсь с проблемой выравнивания в xlabels и ylabels.Они не выровнены.Кто-нибудь может мне помочь, как я могу решить эту проблему.Спасибо

1 Ответ

0 голосов
/ 23 февраля 2019

Они не выравниваются, если графики отличаются.В вашем случае цифры разные.

Вы можете сделать это вручную или использовать text(my_x, my_y,'mylabel') и настроить его правильно.Я написал пример ниже.

a=1:10;
b=a.^2;

subplot(4,1,1)
plot(a,b)
ylabel(' long text')

subplot(4,1,2)
plot(a,a)
ylabel('long even long text')

subplot(4,1,3)
hold
plot(a,b)
text(0,50,'long text','HorizontalAlignment','center','VerticalAlignment','middle', ...
'FontSize',12,'Rotation',90)

subplot(4,1,4)
hold
plot(a,a)
text(0,5,'long even long text','HorizontalAlignment','center','VerticalAlignment','middle', ...
'FontSize',12,'Rotation',90)

, давая график ниже Graphs

Обратите внимание, что последние два выровнены, но было необходимо ввести координаты с помощьюрука, как я сделал.В качестве подсказки вы часто можете использовать свои данные и перемещать их на фиксированный процент (например, минимальная общая длина графика -10%), что позволяет «автоматизировать» ваш сценарий.

Другой способ заключается виспользуйте свойство Position ylabel.Но это похоже на метод, описанный выше.Для этого используйте

t=ylabel('long text')
t = 
  Text ( long text) with properties:

                 String: ' long text'
               FontSize: 11
             FontWeight: 'normal'
               FontName: 'Helvetica'
                  Color: [0.15 0.15 0.15]
    HorizontalAlignment: 'center'
               Position: [0.3333 50 -1]
    %other things here too

%overwrite the property
% Here you have to put [X_position Y_position Z_position]
t.Position= [0.2 50 -1];

Чтобы это работало, каждому x / ylabel нужно свое имя или имя, но обновите позицию перед повторным вызовом команды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...