Is plotyy producing jitter in the x-axis, or is it my code?
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaire
dpb
le 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?
Réponse acceptée
dpb
le 25 Sep 2013
Modifié(e) : dpb
le 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 commentaires
Image Analyst
le 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
le 26 Sep 2013
Modifié(e) : dpb
le 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.
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Two y-axis dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!