Superimposing extra axes in second tile of a tiled chart layout

36 ビュー (過去 30 日間)
SKP
SKP 2021 年 9 月 28 日
コメント済み: Adam Danz 2022 年 2 月 2 日
Running the below appended code gives a figure shown as below. I want the green curve corresponding to y4 (green squares) to appear in the secondary axes (y-right and x-top) of tile 2. I know that I am making a mistake in line 38 (comments are added to this line) of the code by calling the axes corresponding to tile1 instead of tile2. But I do not know how to call the axes for the second tile. Could someone help me with this?
clear; clc;
%% Data for plotting
x1 = (15:15:1800)';
y1 = x1./(1-x1);
y2 = exp(-x1./(1+x1));
y3 = log10(x1);
y4 = log(x1);
x2 = 50*x1;
t = tiledlayout(1,2);
%% Tile 1
ax1 = axes(t);
l1 = plot(ax1,x1,y1,'-bo');
ax1.XAxisLocation = 'bottom';
ax1.YAxisLocation = 'left';
ax1.Color = 'none';
xlabel('time (days)'); ylabel('y1');
axis square;
ax2 = axes(t);
l2 = plot(ax2,x2,y2,'-xr');
ax2.XAxisLocation = 'top';
ax2.YAxisLocation = 'right';
ax2.Color = 'none';
xlabel('Number of cycles'); ylabel('y2');
ax2.XAxis.Exponent = 0; xtickformat('%.0f');
axis square;
legend([l1;l2],'y1','y2','Location','East');
ax1.Box = 'off';
ax2.Box = 'off';
%% Tile 2
ax3 = nexttile;
l3 = plot(ax3,x1,y3,'-pm');
ax3.Color = 'none';
xlabel('time (days)'); ylabel('y3');
axis square
ax4 = axes(t); % How to superimpose a secondary axes on the second tile instead of the first tile?
l4 = plot(ax4,x2,y4,'-sg');
ax4.XAxisLocation = 'top';
ax4.YAxisLocation = 'right';
ax4.Color = 'none';
xlabel('Number of cycles'); ylabel('y4');
ax4.XAxis.Exponent = 0; xtickformat('%.0f');
axis square
legend([l3;l4],'y3','y4','Location','East');
ax3.Box = 'off';
ax4.Box = 'off';

採用された回答

Harikrishnan Balachandran Nair
Harikrishnan Balachandran Nair 2021 年 10 月 18 日
Hi,
I understand that you have created a 2*1 tiled and are trying to superimpose another axis on the second tile.
By manually creating an 'axes' object with the tiled layout chart 't' as the parent container, the axes goes to the first tile by default.
In the code you have provided, inorder to create a new 'axes' object at the second tile, you can first create the axes 'ax4' with 't' as the parent container, and then manually specify the tile location by changing the property 'Tile' , inside the 'Layout' property of object 'ax4'. This can be done by adding the following lines of code:
ax4 =axes(t);
ax4.Layout.Tile=2;
You can refer to the following Documentation to get a better idea on it :
  2 件のコメント
SKP
SKP 2021 年 10 月 18 日
Thank you. You have precisely answered my question.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeData Exploration についてさらに検索

製品


リリース

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by