How to add a second , upper x axis and control the value's locations and text?

246 Ansichten (letzte 30 Tage)
Hi all,
My code generates simple plot and I would like to add a second x-axis with the same scaling as in the first one. However, I cannot seem to control the locations and text where values are placed, from some reason. I would be happy to get your help.
Here is my code:
x = 1:10
y = x.^2;
%
plot(x,y)
xlabel('vector 1')
ylabel('vector 2')
ax1 = gca;
% handle second X-axis
ax2 = axes('Position',get(ax1,'Position'),'XAxisLocation','top','YAxisLocation','right','Color','none','XColor','k','YColor','k');
k=get(ax1,'XTick');
l=get(ax1,'Position');
set(ax2,'YTick',([]));
Thanks!
Ron

Akzeptierte Antwort

Ameer Hamza
Ameer Hamza am 22 Sep. 2020
Bearbeitet: Ameer Hamza am 22 Sep. 2020
Are you trying to do something like this
x = 1:10;
y = x.^2;
%
ax1 = axes();
box(ax1);
xlabel('vector 1')
ylabel('vector 2')
plot(x,y)
% handle second X-axis
ax2 = axes('Position', get(ax1,'Position'), ...
'XAxisLocation','top', ...
'Color','none', ...
'XColor','k');
ax2.YAxis.Visible = 'off';
ax2.XLim = ax1.XLim;
also add the following line if you want the x-limits to be automatically linked
linkprop([ax1 ax2], 'XLim')
  4 Kommentare
Ron Nativ
Ron Nativ am 22 Sep. 2020
Bearbeitet: Ron Nativ am 22 Sep. 2020
I found a solution, if anyone is intersted:
%%
axes2 = axes('Parent',figure_name,...
'Position',[0.14 0.15 0.77 0.78]);
xlim(axes2,[xlim1 xlim2]);
% Set the remaining axes properties
set(axes2,'Color','none','XAxisLocation','top','XColor',[0 0 0],...
'XMinorTick','on','XScale','log','XTick',[1 1000 1e6],...
'XTickLabel',{'1 year','1000 years','10^{6} years'});
set(axes2,'YTickLabel',[],'Ytick',[],'Ycolor',[1 1 1])
%%
Ameer Hamza
Ameer Hamza am 22 Sep. 2020
I thought that you wanted the same x limits. I am glad that you found the solution. The following code shows an alternate way.
x = 1:10;
y = x.^2;
%
ax1 = axes();
box(ax1);
xlabel('vector 1')
ylabel('vector 2')
plot(x,y)
% handle second X-axis
ax2 = axes('Position', get(ax1,'Position'), ...
'XAxisLocation','top', ...
'Color','none', ...
'XColor','k');
ax2.YAxis.Visible = 'off';
ax2.XLim = [1 1e6];
ax2.XTick = [1 1e3 1e6];
ax2.XTickLabel = {'1 year','1000 years','10^{6} years'};
ax2.XScale = 'log';

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by