Разная правая и левая оси на графике MATLAB?

Я рисую одну трассировку в MATLAB с plot(). Я хотел бы добавить правую ось y с другим набором меток (масштабируется линейно). Возможно ли это?

Ответы

Ответ 1

Есть несколько хороших предложений по этому тесно связанному вопросу, хотя они имеют дело с более сложной ситуацией, чем ваша. Если вы хотите супер-простое решение для DIY, вы можете попробовать следующее:

plot(rand(1, 10));       % Plot some random data
ylabel(gca, 'scale 1');  % Add a label to the left y axis
set(gca, 'Box', 'off');  % Turn off the box surrounding the whole axes
axesPosition = get(gca, 'Position');           % Get the current axes position
hNewAxes = axes('Position', axesPosition, ...  % Place a new axes on top...
                'Color', 'none', ...           %   ... with no background color
                'YLim', [0 10], ...            %   ... and a different scale
                'YAxisLocation', 'right', ...  %   ... located on the right
                'XTick', [], ...               %   ... with no x tick marks
                'Box', 'off');                 %   ... and no surrounding box
ylabel(hNewAxes, 'scale 2');  % Add a label to the right y axis

И вот что вы должны получить:

введите описание изображения здесь

Ответ 3

Решение Jiro является хорошим (функция обмена файлами), однако он не позволяет использовать встроенные функции построения Matlab (бар, разброс и т.д.), и вместо этого вы должны использовать plot2axes. Собственная помощь Matlab дает решение иметь две оси на любых типах графиков: ax2 = оси ('Position', get (ax1, 'Position'),...          'XAxisLocation', 'сверху',...          'YAxisLocation', 'право',...          'Цвет', 'ни один',...          'Xcolor', 'к', 'YColor', 'к');

Посмотрите: http://www.mathworks.com/help/techdoc/creating_plots/f1-11215.html

Ответ 4

Откройте справку MATLAB с помощью F1 и посмотрите на функции ниже функции plot, о которой вы упомянули, там вы увидите plotyy. Это то, что вам, вероятно, нужно.

UPDATE: на самом деле plotyy НЕ является ответом на вопрос, как указано gnovice.

Ответ 5

В Matlab 2016 и далее есть возможность определить, на какой оси изображены одна диаграмма:

yyaxis left
plots...
yyaxis right
plots...

Источник: https://se.mathworks.com/help/matlab/ref/yyaxis.html

Ответ 6

Я смог сделать это со следующим после построения графика левой оси:

yyaxis right
ylabel('Right axis label')
plot(x,y1) % plot your right axis graph

Надеюсь, что это поможет.