Как построить горизонтальную линию и кривую на одном графике в 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 или новее.