Creating transparent rectangles when x values are times with dates
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I understand how to use the patch function to create a shaded transparent rectangle when the x and y values are just numbers. For example, the code
plot([1 2],[2 1])
x = [1.25 1.5 1.5 1.25];
y = [1 1 1.75 1.75];
p=patch(x,y,'r');
set(p,'FaceAlpha',0.5);
creates a graph with the plotted line and a transparent red rectangle. My actual plot has the x values (which are a time and date) exported from excel, and then converted to matlab date and time by using datetime and stored in the vector Time. After plotting my data, I tried to do something like this to add the shaded rectangle:
x = [Time(1) Time(2) Time(2) Time(1)];
y = [30 30 35 35];
p=patch(x,y,'r');
set(p,'FaceAlpha',0.5);
This gives me the error: "Error using patch. Vectors must be the same length." The vectors x and y are both length 4, so I don't understand why I get this error. Since it worked in the simple example, I am assuming it has something to do with the x values being in the datetime form.
5 comentarios
James
el 18 de En. de 2017
Editada: James
el 18 de En. de 2017
Digging some into the source code for stairs, it looks like there's an undocumented function to do this: matlab.graphics.internal.makeNumeric.
[XData, YData] = matlab.graphics.internal.makeNumeric(axis_handle, XData, YData);
Like all undocumented/internal functionality, your mileage may vary and it's subject to change at any time.
Respuestas (2)
James Uber
el 20 de En. de 2018
I had the same problem using patch. fill() has no such limitation with date time axes, so perhaps that will work for you as well.
1 comentario
Alan Bindemann
el 8 de En. de 2019
Thanks, fill works much better than rectangle as it supports datetime values.
Jan
el 18 de En. de 2017
Please try to convert the time to a numerical format:
TimeNum = datenum(Time);
TimeNum = x2mdate(xlsread('timesheet.xlsx', sheet, 'E:E'));
Then plotting should work. To get rid of the ugly axis lables, use datetick.
0 comentarios
Ver también
Categorías
Más información sobre Dates and Time 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!