2015-08-21 5 views
0

У меня возникли проблемы с получением моего названия, когда у меня есть фигура с двумя осями x. Сюжет выглядит хорошо, а шкалы осей - это то, что я хотел бы, чтобы они были, но меткой второй оси, и название заканчивалось вне моей фигуры.Matlab: Установка двух осей x и названия на рисунке

Как заставить график и ось иметь одинаковый размер и изменить размер фигуры, чтобы включить метки и заголовок?

Вот минимальный пример:

x1 = linspace(0, 5); 
y11 = sin(x1); 
y12 = cos(x1); 
x2 = linspace(4, 12); 

figure(1) 
plot(x1, y11, 'r'); 
hold on 
grid on 
plot(x1, y12, 'k'); 
axis([0 5 -1 1.8]); 
legend('sin(x)', 'cos(x)'); 
xlabel('x') 
ylabel('y-label'); 
ax1 = gca; 
ax1_pos = ax1.Position; 
ax2 = axes('Position', ax1_pos,... 
      'XAxisLocation', 'top',... 
      'YAxisLocation', 'right',... 
      'Color', 'none'); 
ax2.YColor = 'w'; 
title('2:nd Harmonics'); 
line(x2,0,'Parent',ax2,'Color','k') 
xlabel('n'); 

ответ

3

В качестве временного решения можно предварительно определить Position свойства (то есть размер) 1-й осей перед формированием участка, так что название отображается правильно, даже если вы добавляете вторая ось. Например, сразу после вызова figure(1) добавить что-то вроде этого:

ax1 = axes('Position',[0.11 0.11 0.75 0.75]); 

Кроме того, если вы хотите распечатать экспоненту значение в названии можно использовать латексные форматирования следующим образом:

title('2^{nd} Harmonics'); 

Вот весь код с выхода:

clear 
clc 
close all 

x1 = linspace(0, 5); 
y11 = sin(x1); 
y12 = cos(x1); 
x2 = linspace(4, 12); 

figure(1) 

%// Set axes position manually 
ax1 = axes('Position',[0.11 0.11 0.75 0.75]); 

plot(x1, y11, 'r'); 
hold on 
grid on 
plot(x1, y12, 'k'); 
axis([0 5 -1 1.8]); 
legend('sin(x)', 'cos(x)'); 
xlabel('x') 
ylabel('y-label'); 
%ax1 = gca; 

ax1_pos = get(ax1,'Position'); 
ax2 = axes('Position', ax1_pos,... 
      'XAxisLocation', 'top',... 
      'YAxisLocation', 'right',... 
      'Color', 'none'); 
set(ax2,'YColor','w'); 

%// Notice the Latex formatting to print the exponent 
title('2^{nd} Harmonics'); 
line(x2,0,'Parent',ax2,'Color','k') 
xlabel('n'); 

enter image description here

Затем вы можете изменить размер по своему желанию; название остается видимым.

Смежные вопросы