Ticks on second y-axis

48 vues (au cours des 30 derniers jours)
Markus R.
Markus R. le 8 Mai 2020
Commenté : Markus R. le 8 Mai 2020
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.
  2 commentaires
Walter Roberson
Walter Roberson le 8 Mai 2020
plotyy() and yyaxis are not promised to be compatible. If you are going to use yyaxis then use two plot() statements with appropriate yyaxis calls instead of using plotyy()
Markus R.
Markus R. le 8 Mai 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.

Connectez-vous pour commenter.

Réponse acceptée

Mehmed Saad
Mehmed Saad le 8 Mai 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);
  1 commentaire
Markus R.
Markus R. le 8 Mai 2020
Thank you very much!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Two y-axis dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by