Multiple X-Axes with separate scales and xlabels

34 vues (au cours des 30 derniers jours)
Nathaniel H Werner
Nathaniel H Werner le 9 Avr 2020
Hello,
I am trying to make a figure with two x-axes, and I want each axis to have a separate scale because they represent different intervals/variables.
Here is what I have so far.
ax1 = gca; % current axes
ax1.XColor = 'k';
ax1.YColor = 'k';
ax1_pos = ax1.Position; % position of first axes
ax2 = axes('Position',ax1_pos,...
'XAxisLocation','top',...
'YAxisLocation','right',...
'Color','none');
ax2.XColor = 'r';
xlim(ax1,[0,AR(q,i)])
set(ax1,'XTick',[0,(0.2:0.9)*3])
The default scale for the top (red) axis is 0 1. I can change the tick marks that are shown but I want them to vertically line up with the black tick marks and for this graph go from -1 to 0. I'm just using 0.1 and 0.2 since they seem to line up by eyeballing it.
set(ax2,'XTick',[0.1,0.2])
set(ax2,'YTick',[])
xlabel(ax1,'Ro(r)')
I also want the there to be an xlabel, but the default location is above the axis since it's on top. How can I move the label so that it's on the same level as tick labels? The only way that I can actually see the label is if I make the figure full screen.
xlabel(ax2,'\omega_r(r)/|min(\omega_r(r))|')
ylabel(ax1,'(y-y_{wing})/\Delta y')
Regular size, you can barely see any of the top xlabel (the arrow is about where I want it to be), but you can see it in fullscreen.
Update: I just figured out I can change the VerticalAlignment to top and this moves the xlabel on top to exactly where I want it. No need to provide an answer for that.

Réponse acceptée

Rajani Mishra
Rajani Mishra le 14 Avr 2020

Plus de réponses (0)

Catégories

En savoir plus sur Graphics Objects dans Help Center et File Exchange

Produits


Version

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by