Ticks on second y-axis

86 views (last 30 days)
Markus R.
Markus R. on 8 May 2020
Commented: Alan on 15 Nov 2024 at 13:20
Hey there,
I'm one step away from reaching my wanted result. I have a bar chart and tow y-axis. The problem is that the right y-axis won´t accept my "ytricks" command.
Here is the code:
N=5; % number of bars
y1=[0,289.17; % first data set
0,507.71;
0,775.66;
0,1346.97;
0,1853.58];
y2=[2.36,0; % second data set
3.97,0;
5.52,0;
7.72,0;
8.51,0];
y1(:,1)=nan;
y2(:,2)=nan; % NB: column 2, then column 1 are set NaN for bar chart plotting
x=[1:N].'; % use the serial index to plot against; transpose
z=plotyy(x,y1,x,y2,@bar,@bar); % plot, save axes handles
yyaxis left
set(z(2),'xtick',[]) % turn off labels on RH x-axis; keep only one set
ylabel(['Time [s]']);
yticks(0:200:2000);
yyaxis right
yticks(0:1:10); % not working !
yl = ylabel('Temperature [°C]');
set(yl, 'Color', 'k');
set(z(1),'xticklabel',[0.5,0.75,1,1.5,2]) % tick labels on first...
xlabel(['Factor']);
l = cell(1,2); % legend
l{1}='Time'; l{2}='Temperature';
m = legend(l);
set(m,'FontSize',12);
and here is the result:
Can someone help me scaling the right y-axis (1:1:10)?
Thanks in advance
Markus R.
  3 Comments
Markus R.
Markus R. on 8 May 2020
Thanks for your answer. It makes sense to me. But how do I plot a bar chart with plot(); I could only finde the comment bar(). Without the "z = plotyy()" function I can't scale the x-axis.
Alan
Alan on 15 Nov 2024 at 13:20
Hi Marcus, you will get your desired result if you replace
set(z(2),'xtick',[])
with
set(z(2),'ytick',[])

Sign in to comment.

Accepted Answer

Mehmed Saad
Mehmed Saad on 8 May 2020
Either use plotyy or yyaxis
I am demonstrating how to do it with plotyy
z=plotyy(x,y1,x,y2,@bar,@bar); % plot, save axes handles
% Access axes using set
set(z(1),'YTick',0:200:2000,'xticklabel',[0.5,0.75,1,1.5,2]);
% Access axes properties directly (you can also use set here)
z(1).YLabel.String = 'Time [s]';
% Access axes using set
set(z(2),'YTick',0:1:10);
% Access axes properties directly (you can also use set here)
z(2).YLabel.String = 'Temperature [°C]';
xlabel('Factor');
m=legend('Time','Temperature','Location','northwest');
set(m,'FontSize',12);

More Answers (0)

Categories

Find more on Two y-axis 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!