Error on 'axes' parameters

2 visualizzazioni (ultimi 30 giorni)
Vasileios Leivadas
Vasileios Leivadas il 12 Lug 2018
Modificato: Adam Danz il 16 Lug 2018
I am receiving the following error probably referring to 'XLim' or 'YLim' as 'axes' parameters:
Error using axes
Value must be a 1x2 vector of numeric type in which the second element is larger than the first and may be Inf
I checked my workspace and everything seems fine since 'XLim' is a 1x2 datetime vector and 'YLim' is a 1x2 numeric vector with their 'min limit' < 'max limit'.
The related code is the following:
ax1 = gca;
ax1_Pos = ax1.Position;
ax1_XLim = ax1.XLim;
ax1_YLim = ax1.YLim;
ax1_start = ax1.XLim(1);
%ax1_end = ax1.XLim(2);
xticks([ax1_start, time_dat(51-1), time_dat(86-1), time_dat(129-1), time_dat(170-1)]);
ax2_labels = {'z_acc_test','setup1','y_acc_test','setup2','x_acc_test'};
ax2 = axes('Position', ax1_Pos, 'XLim', ax1_XLim, 'YLim', ax1_YLim, 'XAxisLocation', 'top', 'YAxisLocation', 'right', 'XTick', xticks, 'XTickLabel', ax2_labels);

Risposta accettata

Adam Danz
Adam Danz il 12 Lug 2018
Modificato: Adam Danz il 12 Lug 2018
In the last line of your code, what does 'xticks' equal? I see you use the function xticks() but I don't see where you have assigned a value to a variable 'xticks'. Could your error be due to that?
  11 Commenti
Vasileios Leivadas
Vasileios Leivadas il 13 Lug 2018
If you mean the actual values, they are the following:
'Jul 11, 2018, 15:52' 'Jul 11, 2018, 16:01'
Adam Danz
Adam Danz il 13 Lug 2018
Modificato: Adam Danz il 13 Lug 2018
Those dates work for me and I don't have any errors. In this example I set the datetime limits to your date/times above.
figure
ax1 = axes;
ax1_XLim = datetime([2018,2018],[7,7],[11,11],[15,16],[52,01],[0,0]);
xl = datenum(ax1_XLim);
xlim(xl)
set(ax1, 'xtick', xl)
datetick(ax1, 'x', 'mmm dd, yyyy, HH:MM', 'keepticks')

Accedi per commentare.

Più risposte (1)

Vasileios Leivadas
Vasileios Leivadas il 13 Lug 2018
Cool! I fixed it but the problem was actually at the XTick rather than the limit. Now I am getting some weird figure though, where basically my plots are being erased as a result of the new axes. It seems like the whole Cartesian box is duplicated and put on top of the previous one. The related code is:
x = time_dat;
y1 = true_accel_x;
y2 = true_accel_y;
y3 = true_accel_z;
y7 = T.Accel_Mag;
plot(x,y1,'b-o',x,y2,'g-o',x,y3,'r-o')
hold on
plot(x,y7,'m-o','LineWidth',0.5,'MarkerEdgeColor','c');
legend('Acc_X','Acc_Y','Acc_Z', 'AccelMag');
hold off
xlabel('Time (s)');
ylabel('Acceleration (G)');
ax1 = gca;
% ax1.Box = 'off';
ax1.Box = 'off';
ax1_Pos = ax1.Position;
ax1_XLim = ax1.XLim;
x1 = datenum(ax1_XLim);
ax1_YLim = ax1.YLim;
ax1_start = ax1.XLim(1);
%ax1_end = ax1.XLim(2);
Ticks = [ax1_start time_dat(51-1) time_dat(86-1) time_dat(129-1) time_dat(170-1)];
x2 = datenum(Ticks);
ax2_labels = {'z acc test','setup1','y acc test','setup2','x acc test'};
ax2 = axes('Position', ax1_Pos, 'XLimMode', 'manual', 'XLim', x1, 'YLim', ax1_YLim, 'XAxisLocation', 'top', 'YAxisLocation', 'right','XTickMode', 'manual');
ax2.XTick = x2;
ax2.XTickLabel = ax2_labels;
  4 Commenti
Adam Danz
Adam Danz il 15 Lug 2018
Modificato: Adam Danz il 16 Lug 2018
I see. You need to add this to your axes()...
ax2 = axes( ..., 'Color', 'None', ... );
That will make the 2nd axis transparent so you can see axis 1 as well.
Vasileios Leivadas
Vasileios Leivadas il 16 Lug 2018
Thanks buddy! You've been very helpful!

Accedi per commentare.

Categorie

Scopri di più su Axes Appearance in Help Center e File Exchange

Prodotti


Release

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by