Highlighting sections of a plot
19 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Sophia van Mourik
am 26 Feb. 2022
Kommentiert: Star Strider
am 17 Aug. 2022
Hi,
I have this plot below.
%% Plotting PU2
plot(wavelength,Day0_PU2,"-")
hold on
plot(wavelength,Day5_PU2,"-")
plot(wavelength,Day14_PU2p,"-")
% plot(wavelength,Day14_PU1b,"-")
% plot(wavelength,PU3,"-")
% plot(wavelength,PU4,"-")
xlim([400 4000])
hold off
title('Degradation of PU2 by Psuedomonas Esterase @37 Degree C')
ylabel('Transmittance %')
xlabel('Wavelength cm-1')
legend('Day0','Day5','Day14 ','Location','southwest');
xticklabels()
set ( gca, 'xdir', 'reverse' )

In the figure winow you can use the brush tool to highlight sections of the plot like so.

I was wondering if there is a way to do this through the code and highlight the whole vertical section of the plot to look something like this...

This graph is taken from using a patch function. I can use a patch on a defined curve but struggling to figure out how to patch a plot with a date plot. Would I have to extract the lines curve equation somehow? and then use the patch function.
My aim is to be able to load my IR spectra data into MATLAB, plot it and use a code to automatically pick out desirable wavelengths to highlight.
Is this possible?
Thanks,
S
0 Kommentare
Akzeptierte Antwort
Star Strider
am 26 Feb. 2022
The patch function did not always work with datetime values.
It does in recent releases. However it does not appear that the variables in the posted plot are datetime variables. It wouold hellp to have the data.
x = linspace(0, 10, 500);
y = sin(2*pi*x/5);
idx = find(diff(sign(y-0.5))) % Regions Greater Than 0.5
idxm = reshape(idx,2,[])
figure
plot(x, y)
yl = ylim;
hold on
for k = 1:size(idxm,2)
xrng = idxm(1,k) : idxm(2,k);
patch([x(xrng) flip(x(xrng))], [min(ylim)*ones(size(y(xrng))) flip(y(xrng))], 'r', 'FaceAlpha',0.5)
end
hold off
grid
.
4 Kommentare
Miguel De Leon
am 17 Aug. 2022
Hello, I am new to matlab and trying to do the same thing. Could you explain this part of the code please (y = sin(2*pi*x/5)?
Star Strider
am 17 Aug. 2022
@Miguel De Leon — That creates a vector of dependent variable values necessary to illustrate how the code works and the result. It could be any appropriate function.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Annotations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
