How do I set YAxis of Axes from a numeric ruler to a datetime ruler?

10 visualizaciones (últimos 30 días)
I would like to dynamically set the Yaxis to a datetime ruler.
Example Code:
figure;
aa=axes;
set(aa,'YAxis', matlab.graphics.axis.decorator.DatetimeRuler);
I get the following error:
Error
Error using matlab.graphics.axis.Axes/set
You cannot set the read-only property 'YAxis' of Axes.
I was able to set the xaxis to a datetime ruler but, the yaxis is set as read-only for some reason.
  3 comentarios
dpb
dpb el 7 de En. de 2019
I'm guessing this is a non-supported feature that TMW expects that if you want a datetimeruler axis that you'll create the axis with such. Doc for the axes object implies such.
Seems like there could be a time and place to be able to do this programmatically, I'd agree...submit enhancement request.
nanren888
nanren888 el 7 de En. de 2019
Will datetick() do?
I know, just another numeric ruler, but it does some things.

Iniciar sesión para comentar.

Respuesta aceptada

Cris LaPierre
Cris LaPierre el 7 de En. de 2019
This can be handled automatically if your Y variable is a datetime.
td = datetime(datestr(now + [0:10]'),'Format','MMM-dd');
x = 0:10;
plot(x,td)
yDateTime.png
  6 comentarios
Eric Delgado
Eric Delgado el 11 de Feb. de 2021
Unfortunately it is not possible to change the ruler of an axes. It is a read only property. The simplest and natural solution is just put a new data under the old data.
fig = figure;
ax = axes(fig);
data1 = line(ax, 1:10, linspace(datetime([2020 12 01]), datetime([2020 12 10]), 10))
ax.YAxis
% You have a datetime ruler axes.
cla
data1 = line(ax, 1:10, 1:10)
ax.YAxis
% And now you have a numerical ruler axes.
Adam Danz
Adam Danz el 11 de Feb. de 2021
> Unfortunately it is not possible to change the ruler of an axes
Yes it is, in at least some contexts. Cris and I both share methods directly above.
To clarify your solution, cla() is the only reason it works. When you clear the axis, it's a blank slate and the axes will respond to the data classes again. If you remove cla from your answer, it no longer works. But it's a good point. Clearing the axis is a solution. But it doesn't really convert the axes. It just resets them.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Graphics en Help Center y File Exchange.

Productos


Versión

R2017a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by