Ну, есть несколько способов отображения нескольких рядов данных на одном рисунке.
Я буду использовать небольшой примерный набор данных вместе с соответствующими цветами:
%% Data
t = 0:100;
f1 = 0.3;
f2 = 0.07;
u1 = sin(f1*t); cu1 = 'r'; %red
u2 = cos(f2*t); cu2 = 'b'; %blue
v1 = 5*u1.^2; cv1 = 'm'; %magenta
v2 = 5*u2.^2; cv2 = 'c'; %cyan
Прежде всего, когда вы хотите, чтобы все было на одной оси, вам понадобится функция hold
:
%% Method 1 (hold on)
figure;
plot(t, u1, 'Color', cu1, 'DisplayName', 'u1'); hold on;
plot(t, u2, 'Color', cu2, 'DisplayName', 'u2');
plot(t, v1, 'Color', cv1, 'DisplayName', 'v1');
plot(t, v2, 'Color', cv2, 'DisplayName', 'v2'); hold off;
xlabel('Time t [s]');
ylabel('u [some unit] and v [some unit^2]');
legend('show');

Вы видите, чтоэто правильно во многих случаях, однако, это может стать громоздким, когда динамический диапазон обеих величин сильно различается (например, значения u
меньше 1, а значения v
намного больше).
Во-вторых, когда у вас много данных или разных количеств, также можно использовать subplot
для разных осей.Я также использовал функцию linkaxes
, чтобы связать оси в направлении х.Когда вы увеличиваете один из них в MATLAB, другой отображает тот же диапазон x, что позволяет легче просматривать большие наборы данных.
%% Method 2 (subplots)
figure;
h(1) = subplot(2,1,1); % upper plot
plot(t, u1, 'Color', cu1, 'DisplayName', 'u1'); hold on;
plot(t, u2, 'Color', cu2, 'DisplayName', 'u2'); hold off;
xlabel('Time t [s]');
ylabel('u [some unit]');
legend(gca,'show');
h(2) = subplot(2,1,2); % lower plot
plot(t, v1, 'Color', cv1, 'DisplayName', 'v1'); hold on;
plot(t, v2, 'Color', cv2, 'DisplayName', 'v2'); hold off;
xlabel('Time t [s]');
ylabel('v [some unit^2]');
legend('show');
linkaxes(h,'x'); % link the axes in x direction (just for convenience)

Субплоты делаюттратить некоторое пространство, но они позволяют хранить некоторые данные вместе, не перенасыщая график.
Наконец, в качестве примера для более сложного метода построения разных количеств на одном и том же рисунке с использованием plotyy
функция (или еще лучше: функция yyaxis
начиная с R2016a)
%% Method 3 (plotyy)
figure;
[ax, h1, h2] = plotyy(t,u1,t,v1);
set(h1, 'Color', cu1, 'DisplayName', 'u1');
set(h2, 'Color', cv1, 'DisplayName', 'v1');
hold(ax(1),'on');
hold(ax(2),'on');
plot(ax(1), t, u2, 'Color', cu2, 'DisplayName', 'u2');
plot(ax(2), t, v2, 'Color', cv2, 'DisplayName', 'v2');
xlabel('Time t [s]');
ylabel(ax(1),'u [some unit]');
ylabel(ax(2),'v [some unit^2]');
legend('show');

Это, конечно, выглядит многолюдно, но может прийтиудобно, когда у вас большая разница в динамическом диапазоне сигналов.
Конечно, ничто не мешает вам использовать комбинацию этих методов вместе: hold on
вместе с plotyy
и subplot
.
edit:
Для quiver
я редко использую эту команду, но в любом случае, вам повезло, что я некоторое время назад написал некоторый код, чтобы облегчить построение векторных полей.Вы можете использовать те же методы, которые описаны выше.Мой код далеко не строгий, но здесь идет:
function [u,v] = plotode(func,x,t,style)
% [u,v] = PLOTODE(func,x,t,[style])
% plots the slope lines ODE defined in func(x,t)
% for the vectors x and t
% An optional plot style can be given (default is '.b')
if nargin < 4
style = '.b';
end;
% http://ncampbellmth212s09.wordpress.com/2009/02/09/first-block/
[t,x] = meshgrid(t,x);
v = func(x,t);
u = ones(size(v));
dw = sqrt(v.^2 + u.^2);
quiver(t,x,u./dw,v./dw,0.5,style);
xlabel('t'); ylabel('x');
При вызове:
logistic = @(x,t)(x.* ( 1-x )); % xdot = f(x,t)
t0 = linspace(0,10,20);
x0 = linspace(0,2,11);
plotode(@logistic,x0,t0,'r');
это приводит к: 
Если вы хотите большеруководство, я нашел эту ссылку в моем источнике очень полезной (хотя и плохо отформатированной).
Кроме того, вы можете взглянуть на справку MATLAB, это действительно здорово.Просто введите help quiver
или doc quiver
в MATLAB или используйте ссылки, которые я предоставил выше (они должны содержать то же содержимое, что и doc
).