Cannot set text to UIaxes because cannot set position since xaxis is made of datetime

3 ビュー (過去 30 日間)
I have an application that plots time against pressure values. Time is of the format datetime. I plot using these lines of code.
plot(app.UIAxes_9,pressureTime,Pressure);
app.UIAxes_9.XGrid ="on";
app.UIAxes_9.XMinorGrid ="on";
app.UIAxes_9.YGrid ="on";
app.UIAxes_9.YMinorGrid ="on";
app.UIAxes_9.LineWidth = 2;
app.UIAxes_9.XLabel.String = 'Time&Date';
app.UIAxes_9.XLabel.FontSize = 12;
app.UIAxes_9.XLabel.FontWeight ="bold";
app.UIAxes_9.YLabel.String = 'Pressure[bar]';
app.UIAxes_9.YLabel.FontSize = 12;
app.UIAxes_9.YLabel.FontWeight ="bold";
app.UIAxes_9.Title.String = 'Pressure Cycle';
app.UIAxes_9.Title.FontSize = 14;
app.UIAxes_9.Title.FontWeight ="bold";
[maxValue, maxIndex] = max(Pressure);
maxY = Pressure(maxIndex);
maxX = pressureTime(maxIndex);
text1 = 'Max Pressure[bar]: ';
text2 = num2str(maxValue);
finalText = strcat(text1,text2);
text('Parent',app.UIAxes_9,'String',finalText,'HorizontalAlignment', 'left','VerticalAlignment','bottom','Position',[maxX maxY]);
The problem is the last line, where I tried to put a text on the UIAxes. That is
text('Parent',app.UIAxes_9,'String',finalText,'HorizontalAlignment', 'left','VerticalAlignment','bottom','Position',[maxX maxY]);
where I tried to set the position of the text at maxX and maxY. But [maxX maxY] is giving me an error :
Error using datetime/horzcat (line 1468)
All inputs must be datetimes or date/time character vectors or date/time strings.
So what I understood is you cant combine a double and datetime to form an array. So how can I do this for a app.UIaxes. For a normal plot it is easy, but here I need for app.UIaxes. How to do this. Thank you.

採用された回答

Stephen23
Stephen23 2025 年 6 月 6 日
編集済み: Stephen23 2025 年 6 月 6 日
The basic approach is to supply an x-value which is a DATETIME object:
figure()
X = datetime(2025,6,1:6);
Y = rand(1,6);
plot(X,Y)
dts = datetime(2025,6,3,12,0,0);
text(dts,0.5, "hello")
For more complex situations (e.g. calling the low-level version of TEXT() which specifies the POSITION as an input vector, as your code shows) you can use RULER2NUM() to get the correct numeric value:
fgh = figure();
axh = axes(fgh);
plot(axh,X,Y)
num = ruler2num(dts,axh.XAxis);
text(Parent=axh, String="world", Position=[num,0.5])

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeProgramming についてさらに検索

製品


リリース

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by