Как построить горизонтальную линию и кривую на одном графике в MATLAB?

Я должен показать график данных (кривая) и график среднего значения данных (плоская горизонтальная линия) на одном графике. Мой код все прекрасно вычисляет и отображает кривую на графике, но я не могу отобразить горизонтальную линию.

plot(1:24,hours3,'b-.',1:24, avg3,'r--');

Таким образом, график столбца "hours3" выглядит просто отлично, но график среднего значения "avg3" вообще не подходит. Это должна быть плоская линия, проходящая от точек 1 до 24 по оси X. Кто-нибудь знает почему это?

Большое спасибо за ваше время и опыт.

2 ответа

Это потому что plot(1:24,avg3,rx--) интерпретируется как 24 отдельных пункта. С помощью rx-- так как стиль линии показывает вам, что точки построены правильно, но не связаны между собой.

plot(1:24,hours3,'b-.',1:24, repmat(avg3,1,24),'r--');

Также с hold on Вы можете продолжать черчение на существующей фигуре.

Попробуйте код ниже:

StartPoint=1;
EndPoint=24;
Resolution=1; % you can set 0.1 if you want more precision
Ave=Ave3;% set a value for Ave3

x=[StartPoint:Resolution:EndPoint]; 
NumberofPoints=((EndPoint-StartPoint)/Resolution)+1;
HrzLine=Ave*ones(1,NumberofPoints);

Curve=0.2*x.^3-4.*x.^2+8;

plot(x,HrzLine);
hold on;
plot(x,Curve);

В версии 2018b добавление горизонтальных (и вертикальных) линий стало намного проще с помощью yline() (xline() для вертикальных линий).

Xrng = 1:.01:24;
fh =@(x) 0.2*x.^3 - 4.*x.^2 + 50*sin(x)+ 8;     % curve

plot(Xrng,fh(Xrng))
yline(0)                                        % horizontal line at y = 0

Последующие строки могут быть добавлены так же легко.

yline(50)                                       % horizontal line at y = 0
xline(12,'b--')                                 % vertical line at x = 12  (blue, dashed)

Требуется MATLAB R2018b или новее.

Другие вопросы по тегам