How to add an additional tick on y-axis for a combined boxplot and scatter plot?

Hello all,
I've got 15 horizontal boxplots that reach up until y=1.6 and a scatter plot on the same figure, where the scatter plot are some x values at y=2 only.
I can see the boxplot ticks on the y-axis up until y=1.6. However, I cannot see a ytick on the y-axis at y=2. How can I add that?
**************************
My code until now is:
Ypos = [0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.5 1.6];
group_fordata = [repmat(Ypos(1),[size(x1),1]);
repmat(Ypos(2),[size(x2)],1); repmat(Ypos(3),[size(x3)],1);
repmat(Ypos(4),[size(x4)],1); repmat(Ypos(5),[size(x5)],1);
repmat(Ypos(6),[size(x6)],1); repmat(Ypos(7),[size(x7)],1);
repmat(Ypos(8),[size(x8)],1); repmat(Ypos(9),[size(x9)],1);
repmat(Ypos(10),[size(x10)],1); repmat(Ypos(11),[size(x11)],1);
repmat(Ypos(12),[size(x12)],1); repmat(Ypos(13),[size(x13)],1);
repmat(Ypos(14),[size(x14)],1); repmat(Ypos(15),[size(x15)],1)];
data = [x1;x2;x3;x4;x5;x6;x7;x8;x9;x1;x11;x12;x13;x14;x15]
figure
boxplot(data, group_fordata,'positions', Ypos,'orientation','horizontal')
hold on
scatter([0.4 0.6],[2.0 2.0],'g.')
ylim([0 2.1])

 채택된 답변

This solution's a little clunky, but it works:
% Create a label string for each Ypos:
for k = 1:numel(Ypos)
NewTickLabels{k} = sprintf('%0.1f',Ypos(k));
end
% Include 2.0:
NewTickLabels{k+1} = sprintf('%0.1f',2);
% Set tick values and labels:
set(gca,'YTick',[Ypos 2],'YTickLabel',NewTickLabels)

추가 답변 (1개)

Chad Greene
Chad Greene 2015년 5월 29일
편집: Chad Greene 2015년 5월 29일
You can specify Ytick locations explicitly like this:
Ypos = [0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.5 1.6];
plot(rand(10,2),'bo')
ylim([0 2.1])
set(gca,'Ytick',[Ypos 1.7334 2])

댓글 수: 3

Hi Chad. Thank you for your reply.
Unfortunately this does not work. At y=2.0, I get a ytick equal to 0.0.
*****************************
The code of the figure is:
figure
figure boxplot(data, group_fordata,'positions', Ypos,'orientation','horizontal')
hold on
scatter([0.4 0.6],[2.0 2.0],'g.')
ylim([0 2.1])
set(gca,'Ytick',[Ypos 2.0])
Any thoughts?
Many thanks
Can you recreate the problem with dummy data?
Hi Chad,
Below there is an example with dummy data. Still in the position of my scatter two points, instead of 2.0 as a tick on the y-axis, I've got 0.0.
*********************************************************************
lower = 0;
upper = 1.6;
%%%%%%%%%%%%%%%%%%%%%
%% Actual boxplot data
x1 = lower + (upper - lower).*rand(200,1);
x2 = lower + (upper - lower).*rand(190,1);
x3 = lower + (upper - lower).*rand(180,1);
x4 = lower + (upper - lower).*rand(170,1);
x5 = lower + (upper - lower).*rand(160,1);
x6 = lower + (upper - lower).*rand(150,1);
x7 = lower + (upper - lower).*rand(140,1);
x8 = lower + (upper - lower).*rand(130,1);
x9 = lower + (upper - lower).*rand(120,1);
x10 = lower + (upper - lower).*rand(110,1);
x11 = lower + (upper - lower).*rand(100,1);
x12 = lower + (upper - lower).*rand(90,1);
x13 = lower + (upper - lower).*rand(80,1);
x14 = lower + (upper - lower).*rand(70,1);
x15 = lower + (upper - lower).*rand(60,1);
data = [x1;x2;x3;x4;x5;x6;x7;x8;x9;x10;x11;x12;x13;x14;x15];
%%%%%%%%%%%%%%%%%%
%% Positions on the y-axis
Ypos = [0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.5 1.6];
%%%%%%%%%%%%%%%%
% Data groups
group_fordata = [repmat(Ypos(1),[size(x1),1]);... repmat(Ypos(2),[size(x2)],1); repmat(Ypos(3),[size(x3)],1);... repmat(Ypos(4),[size(x4)],1); repmat(Ypos(5),[size(x5)],1);... repmat(Ypos(6),[size(x6)],1); repmat(Ypos(7),[size(x7)],1);... repmat(Ypos(8),[size(x8)],1); repmat(Ypos(9),[size(x9)],1);... repmat(Ypos(10),[size(x10)],1); repmat(Ypos(11),[size(x11)],1);... repmat(Ypos(12),[size(x12)],1); repmat(Ypos(13),[size(x13)],1);... repmat(Ypos(14),[size(x14)],1); repmat(Ypos(15),[size(x15)],1)];
%%%%%%%%%%%%%%%%
%%Plotting the boxplots and the scatter points
figure
boxplot(data, group_fordata,'positions',Ypos,'orientation','horizontal')
hold on
scatter([0.4 0.6],[2.0 2.0],'g.')
ylim([0 2.1])
set(gca,'Ytick',[Ypos 2.0])

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Data Distribution Plots에 대해 자세히 알아보기

질문:

2015년 5월 29일

댓글:

2015년 6월 2일

Community Treasure Hunt

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

Start Hunting!

Translated by