
How do I set YAxis of Axes from a numeric ruler to a datetime ruler?
    8 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Victor Esparza
 el 7 de En. de 2019
  
    
    
    
    
    Comentada: Adam Danz
    
      
 el 11 de Feb. de 2021
            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
      
      
 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
      
 el 7 de En. de 2019
				Will datetick() do?
I know, just another numeric ruler, but it does some things.
Respuesta aceptada
  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)

6 comentarios
  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
    
      
 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.  
Más respuestas (0)
Ver también
Categorías
				Más información sobre Axes Appearance 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!




