Line plot for 2 X-axis and 2 Y-axis in a single figure
3 次查看(过去 30 天)
显示 更早的评论
Hi,
I am trying to plot X-Y graph(s) in a single figure with primary X-Y and secondary X-Y options. I have found (and editted) the following code for this purpose. However, it produces an offset in the secondary X & Y axis (see the attached figure arrows). Would really appreciate if someone can help me get rid of this issue. Thanks in advance.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/202042/image.jpeg)
clear
clc
close all
% Relevant to Primary X-Y axis
x1 = 0:.1:40;
y1 = 4.*cos(x1)./(x1+2);
y2 = 8.*cos(x1)./(x1+2);
% Relevant to Secondary X-Y axis
x2 = 1:.2:20;
y3 = x2.^2;
y4 = 1.25*(x2.^2);
% Plots in Primary X and Y axis
hl1 = line(x1,y1,'Color','r');
hl2 = line(x1,y2,'Color','g');
ax1 = gca;
set(ax1,'XColor','k','YColor','k', 'TickDir','out')
axis square
xlabel ('Primary X_{axis} (unit)')
ylabel ('Primary Y_{axis} (unit)')
% Plots in Secondary X and Y axis
ax2 = axes('XAxisLocation','top', 'YAxisLocation','right', 'Color','none',...
'XColor','k','YColor','k', 'TickDir','out');
hl3 = line(x2,y3,'Color','k','Parent',ax2);
hl4 = line(x2,y4,'Color','b','Parent',ax2);
axis square
xlabel ('Secondary X_{axis} (unit)')
ylabel ('Secondary y_{axis} (unit)')
2 个评论
采纳的回答
Cris LaPierre
2019-1-30
It looks like you already found this page. However, your code left out the part about setting the position of axes 2 to that of axes 1:
ax1_pos = ax1.Position; % position of first axes
ax2 = axes('Position',ax1_pos,...
This will introduce a new issue, unfortunately. The x-label for the top axis is now out of view. The other issue is that this will work great unless the figure window is resized.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Line Plots 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!