Boxplot: second Y axes labels

7 visualizaciones (últimos 30 días)
Oleg Komarov
Oleg Komarov el 18 de Mzo. de 2011
Respondida: Hussein el 20 de Ag. de 2023
How can i put the same labels also on both left and right Y axes (tried several solutions but can't make them work as I wish)?
boxplot(rand(100,10))
Thanks
Oleg

Respuesta aceptada

Jiro Doke
Jiro Doke el 18 de Mzo. de 2011
I can only think of a workaround...
EDIT: Per Oleg's comment, I've added a "ResizeFcn" for the figure to adjust the axes properties when the figure is resized.
EDIT 2: Added zoom post action so that the tick labels update upon zoom as well.
function boxplot_test
boxplot(rand(100,10));
ax1 = gca;
ax2 = axes('Position', get(ax1, 'Position'), ...
'Color', 'none', 'YAxisLocation', 'right', ...
'XTick', [], 'YTick', get(ax1, 'YTick'), ...
'YLim', ylim(ax1), 'HandleVisibility', 'off');
uistack(ax1);
set(gcf, 'ResizeFcn', @resize);
h = zoom(gcf); % <-- EDIT 2
set(h, 'ActionPostCallback', @resize); % <-- EDIT 2
function resize(varargin)
set(ax2, 'Position', get(ax1, 'Position'), ...
'YTick', get(ax1, 'YTick'), ...
'YLim', ylim(ax1));
end
end
  5 comentarios
Oleg Komarov
Oleg Komarov el 19 de Mzo. de 2011
+1. Thanks Jiro.
Paul
Paul el 6 de Jun. de 2013
Editada: Paul el 6 de Jun. de 2013
AWSM work-around! :) Thanks so much.
However, I have one suggestion...
If you replace the line
uistack(ax1);
with
axes(ax1);
The user is able to still interact with the initial plot (i.e. use data cursor, etc)

Iniciar sesión para comentar.

Más respuestas (3)

Matt Fig
Matt Fig el 19 de Mzo. de 2011
Hey Oleg, I don't have the Stats toolbox so I can't try it out. But I have an idea. Make one figure with plotyy, then make another with the boxplot you want. Then either COPYOBJ the boxplot over to the plotyy figure or set the parent property of the boxplot to one of the plotyy axes. It might be worth a try...
  4 comentarios
Oleg Komarov
Oleg Komarov el 19 de Mzo. de 2011
Yes, but the problem is that I don't want the tick marks on the X axes, but I can't set Xtick, [] and keep the XtickLabels or TickLenght [0,0] and the tick marks on the Y axes!
Jiro Doke
Jiro Doke el 19 de Mzo. de 2011
Yeah, I noticed that. I would go with my solution above, because that uses boxplot as is. Even though the x labels are text objects, they do the "right thing" even when you zoom in and out.

Iniciar sesión para comentar.


Elena
Elena el 5 de Jun. de 2011
also a bit of a workaround: make a plotyy where one the first dataset is empty or all zeros, then use 'hold on' to plot the boxplot over top.

Hussein
Hussein el 20 de Ag. de 2023
Try this code please
% Create some sample data x = 1:10; y1 = rand(1, 10); y2 = rand(1, 10) * 100;
% Plot the first dataset figure; plot(x, y1, 'b-'); xlabel('X'); ylabel('Y1', 'Color', 'b');
% Add a second Y-axis yyaxis right;
% Plot the second dataset plot(x, y2, 'r-'); ylabel('Y2', 'Color', 'r');
% Set the color of the tick labels for the right Y-axis ax = gca; ax.YAxis(2).Color = 'r';
% Add a legend legend('Y1', 'Y2');

Categorías

Más información sobre Axis Labels en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by