How to Put datetime into numeric axis
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hi all,
So I recently wrote a script that can dynamically change x and y axes' data. However, I cannot find a way to plot Date on x-axis.
I use the following way to change the data on axes: (suppose p is the plot line object handle, and somedata is the data I want to show on the axis)
p.XData=somedata;
Everything worked fine if somedata is switching between different double vectors. But if I want to plot date information on x axis, ie. somedata is a datetime vector, then I will get an error saying that the XData must be numeric vector.
I identified the problem to be that the XAxis property of p.Parent (an axes object) is a NumericRuler object, while in order to plot datetime information, it needs to be DatetimeRuler. However, I cannot find a way to change that XAxis property. I cannot find a command that enables me to create DatetimeRuler to replace the NumericRuler.
Can somebody help me with this issue? Thank you very much!
2 Commenti
Walter Roberson
il 12 Lug 2018
It is possible to take an existing DatetimeRuler and use it to replace the XRuler of an existing axes, such as
firstax.XRuler = secondax.XRuler
but this leaves kind of a strange state, and deleting the source axes secondax can cause the firstax.XRuler to become empty.
Risposte (1)
Walter Roberson
il 12 Lug 2018
2 Commenti
Ted Shultz
il 2 Mar 2021
from Walter's link, here is what i came up wtih:
ruler2num is the function you need. it convets from the axis ruler to the axis number. Basicaly you setup a plot wtih datetime on the x axis, and then you can use imagesc to plot using the numeric values that corispond to your datetimes.
y=[3 7]; % just random number of y axis example
x=[datetime, datetime+days(5)]; % will plot image from now to five days from now
A = imread('ngc6543a.jpg'); % this is the image we will use
h1= plot(x,zeros(size(x))); % make a random plot with time as the x axis (will delete this in a second)
hold on
ax1 = gca; % get the current axis
h2= imagesc(ruler2num(x, ax1.XAxis),y,A); % use ruler2num() to plot this at the location we want
delete(h1); % delete this line we made before
Vedere anche
Categorie
Scopri di più su Axes Appearance in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!