Highlighting sections of a plot
20 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Sophia van Mourik
el 26 de Feb. de 2022
Comentada: Star Strider
el 17 de Ag. de 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 comentarios
Respuesta aceptada
Star Strider
el 26 de Feb. de 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 comentarios
Miguel De Leon
el 17 de Ag. de 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
el 17 de Ag. de 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.
Más respuestas (0)
Ver también
Categorías
Más información sobre Annotations en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
