Borrar filtros
Borrar filtros

Error on 'axes' parameters

2 visualizaciones (últimos 30 días)
Vasileios Leivadas
Vasileios Leivadas el 12 de Jul. de 2018
Editada: Adam Danz el 16 de Jul. de 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);

Respuesta aceptada

Adam Danz
Adam Danz el 12 de Jul. de 2018
Editada: Adam Danz el 12 de Jul. de 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 comentarios
Vasileios Leivadas
Vasileios Leivadas el 13 de Jul. de 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 el 13 de Jul. de 2018
Editada: Adam Danz el 13 de Jul. de 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')

Iniciar sesión para comentar.

Más respuestas (1)

Vasileios Leivadas
Vasileios Leivadas el 13 de Jul. de 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 comentarios
Adam Danz
Adam Danz el 15 de Jul. de 2018
Editada: Adam Danz el 16 de Jul. de 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 el 16 de Jul. de 2018
Thanks buddy! You've been very helpful!

Iniciar sesión para comentar.

Etiquetas

Productos


Versión

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by