- It looks like the reason that "ax.FontSize= 20;" did not change the fontsize of the first axes is because it should be "ax1", not "ax", that is: "ax1.FontSize= 20;" instead of "ax.FontSize= 20;".
- The code you provided has syntax errors (for example, "ylabe" instead of "ylabel") and does not produce the plot you shared (for example, the right-side ylabel of "Contact Resistance" vs "Resistance"), so there is some mismatch somewhere. You also did not provide your data, or dummy data of similar scale.
Plotting a single curve with two x and y axes
12 views (last 30 days)
Show older comments
Hi,
I want to plot a signal on voltage scale on the left and as resistance on the right y axis. I want two x-axes one on bottom and one on top. They are directly proportional but the scale is different. I have tried it with following script:
figure('Position',[100 100 1000 800]);
ti= tiledlayout(1,1);
ax1= axes(ti);
ax2= axes(ti);
plot(ax1,disc_poistion,Vc_set(:,1),'lineWidth',1.5)
xlabel('Angular Position [Deg]')
ylabel('Voltage [V]')
plot(ax2,ball_position, Rc_set(:,1),'lineWidth',1.5)
ax2.XAxisLocation= 'top';
ax2.YAxisLocation= 'Right';
xlabel('Angular Position 2 [Deg]')
ylabe('Resistance [\Omega]')
ax=gca;
ax.FontSize= 20;
grid on
However, Im facing problems with the above code. It does plot the curve with two Y and X axes the formating like setting axes limits, changing font size and adding labels is done only on the later scale i.e. ax2. All the formating for the prior scale is reset. Attached is the plot generated from the above script.
with the other method of using yyaxis left and yyaxis right i get two overlapped curves with some offset, which I dont want. I have also gone through the following information page which I didnt find helpful for my case:
'https://uk.mathworks.com/help/matlab/creating_plots/graph-with-multiple-x-axes-and-y-axes.html?searchHighlight=two%20x-axes'
Any help with this would be highly appreciated.
Thanks,
Ammad.
0 Comments
Answers (1)
Drew
on 29 Mar 2024
Edited: Drew
on 29 Mar 2024
The documentation shows how to do what you want. Follow this example and you should be all set:
openExample('graphics/MultipleXandYaxesExample')
The relevant doc page is https://www.mathworks.com/help/matlab/creating_plots/graph-with-multiple-x-axes-and-y-axes.html, and here is a direct link to the specific doc section with this example: https://www.mathworks.com/help/matlab/creating_plots/graph-with-multiple-x-axes-and-y-axes.html?#mw_ca4bd216-f46d-49cd-94ed-3fe176088b04
% Here is the example code without all the explanation ...
% I recommend to open the example to see the explanation.
x1 = 0:0.1:40;
y1 = 4.*cos(x1)./(x1+2);
x2 = 1:0.2:20;
y2 = x2.^2./x2.^3;
t = tiledlayout(1,1);
ax1 = axes(t);
plot(ax1,x1,y1,'-r')
ax1.XColor = 'r';
ax1.YColor = 'r';
ax2 = axes(t);
plot(ax2,x2,y2,'-k')
ax2.XAxisLocation = 'top';
ax2.YAxisLocation = 'right';
ax2.Color = 'none';
ax1.Box = 'off';
ax2.Box = 'off';
As for the issues in your code:
I hope that helps, and please remember to accept the answer.
0 Comments
See Also
Categories
Find more on 2-D and 3-D Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!