MATLAB: Plotting a single time series with double y axes, differently labelled

plot

I would like to plot a time series and have the two y axes (left and right) labelled differently (say, in two different languages). I used the yyaxis function but it doesn't produce the expected result: the right axis is created as 0 to 1 as opposed to the range that the left one has, and to fix this one would have to linearly transform that space to match the left one. I've given a simplified example here, but with real scripts, this become very cumbersome.
Is there an easier way to apply labels on the right hand side axis without having to alter its values?
Thanks!
min=0;
max=9;
x=min:max;
y=floor(10 .* rand([max+1 1])); % integers 0 to 9
scatter(x,y)
ylim([min max])
yyaxis left % english labels; min will be 0, max 9
set(gca, 'YTick', min:max)
set(gca, 'YTickLabel', {'zero' 'one' 'two' 'three' 'four' 'five' 'six' 'seven' 'eight' 'nine' })
yyaxis right % italian labels
set(gca, 'YTick', min:max)
set(gca, 'YTickLabel', {'zero' 'uno' 'due' 'tre' 'quattro' 'cinque' 'sei' 'sette' 'otto' 'nove' })

Best Answer

You need to plot after each yyaxis call:
yyaxis left % english labels; min will be 0, max 9
scatter(x,y,'b')
set(gca, 'YTick', min:max)
set(gca, 'YTickLabel', {'zero' 'one' 'two' 'three' 'four' 'five' 'six' 'seven' 'eight' 'nine' })
yyaxis right % italian labels
scatter(x,y,'b')
set(gca, 'YTick', min:max)
set(gca, 'YTickLabel', {'zero' 'uno' 'due' 'tre' 'quattro' 'cinque' 'sei' 'sette' 'otto' 'nove' })
This plots the same values (and colors) twice, so the plot itself does not change.