Is plotyy producing jitter in the x-axis, or is it my code?

3 Ansichten (letzte 30 Tage)
Brad
Brad am 25 Sep. 2013
Kommentiert: dpb am 4 Sep. 2016
I've got a strange problem when I use the plotyy function in the following code;
% Plot Altitude and Versions with Time
figure('Name','Altitude and Versions','numbertitle','off');
[AX,H1,H2] = plotyy(State_Time, Alt, State_Time, Version, 'semilogy', 'plot');
% Add the title, legend, X-axis and Y-axes labels
title(Event_Title,'FontSize', 20);
legend(Source,'Location','NortheastOutside');
axes(AX(1));
ylabel('Altitude (m)','Fontsize', 20,'fontweight','b');
set(gca, 'XTickLabel',num2str(get(gca,'XTick')','%d'));
xlabel('UTC (Sec)','Fontsize', 20,'fontweight','b');
axes(AX(2));
ylabel('SV ID','Fontsize', 20,'fontweight','b');
% Set the markers, markersizes, and linestyles
set(H1,'Marker','o','MarkerSize',15);
set(H2,'Marker','+','MarkerSize',15);
set(H2,'LineStyle','none');
When the figure appears, it is as I would expect - with the exception of 2 items;
1. The x-axis UTC times have jitter in them. Think of the following line of text;
58570 58572 58574 58576 58578 58580
being overwritten with the following line of text;
5.8570 5.8572 5.8574 5.8576 5.8578 5.8580 x 10^4
The decimal notation is preferred. This is the first time I've used plotyy and I'm not sure if I'm violating some rule pertaining to the function itself.
2. I can seem to control the values of the 2nd y-axis (Version). I want only whole numbers to populate this axis. Currently, it is being autoscaled by MATLAB and I'm not sure how to get around it.
Any ideas?
  1 Kommentar
dpb
dpb am 4 Sep. 2016
Seems peculiar there was an edit after almost 3 yr of inactivity???
Is there some question unresolved here or just a cosmetic change, Brad?

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

dpb
dpb am 25 Sep. 2013
Bearbeitet: dpb am 25 Sep. 2013
It's your code... :)
[AX,H1,H2] = plotyy(State_Time, Alt, State_Time, SV_ID, 'semilogy', 'plot');
axes(AX(1));
set(gca, 'XTickLabel',num2str(get(gca,'XTick')','%d'));
The above writes the tick labels on the LH x-axis but there's no similar statement for the RH axes object. plotyy is two completely independent axes that just are overlaid on top of each other.
There has been much discussion before on why TMW doesn't automagically hide the RH axis x-ticks so there aren't two competing sets visible but there are some disadvantages to that by itself, too.
To solve your problem either
a) set both the same way
set(AX, 'XTickLabel',num2str(get(gca,'XTick')','%d'));
or b) hide the RH ticks entirely...
set(AX(2),'xtick',[])
in which case your previous code will have the desired appearances. All in all, the best solution is probably to use the a) form almost exclusively as it will keep the two in synch. This is particularly important if you decide to do something like zoom in on an axis; then the two won't coincide at all. The alternative way to do the latter is linkaxes but it only handles the range limits, not all the rest of the properties.
  4 Kommentare
Image Analyst
Image Analyst am 26 Sep. 2013
I worked on a problem a month or two ago where a guy had jittery glitches in his plot. He changed renderers and said that fixed the problem.
dpb
dpb am 26 Sep. 2013
Bearbeitet: dpb am 26 Sep. 2013
That does happen on occasion, indeed...I've seen it rarely but it does/can happen w/ the double axes wherein for some reason the roundoff isn't identical for the two, apparently...I've always figured that it when it happens it's owing to the one being left the other right on position that ends up making for slightly different computations of position, etc., that once in a great while do fall into the FP roundoff pit...but that's purely conjecture.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Two y-axis finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by