필터 지우기
필터 지우기

Add background color for some values in a plot of two two variables

조회 수: 5 (최근 30일)
Muhammad Usman
Muhammad Usman 2022년 9월 14일
댓글: Ben 2022년 9월 23일
Hi everyone. I have two variables av1 and av2. Each variables have 114 data points. I want to draw it in same figure but at same time and point I also want to calculate p value from ttest between av1 and av2. So if the significance difference is less then 0.05 at that data point it should draw a background colour. I attached the figure.
  댓글 수: 1
Ben
Ben 2022년 9월 23일
Remember to mark the question as answered or post follow-up comments.

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

답변 (1개)

Ben
Ben 2022년 9월 14일
편집: Ben 2022년 9월 16일
You can plot a bar graph and then set the FaceAlpha to less than 1.
x = [0 1 2 2 3 4 4 6 7 7];
y = [1 2 2 3 4.5 4.5 6 7];
p = [2.15e-12 2.72e-11 2.397e-10 0.0600 5.613e-09 1.803e-08 4.831e-08...
8.945e-08 1.874e-07 2.894e-07];
plot(x,'b')
hold on;
plot(y, 'k')
ax = gca; %Get axis size info
ylimVals = ax.YLim; %Y limits
scaleFact = max(ylimVals);
b1 = bar(scaleFact*(p < 0.05),'b'); %plot blue bar graph
b1.FaceAlpha = 0.5; %Set transparency to 50%
b1.EdgeAlpha = 0; %Maybe you want no outline on the bar
ylim(ylimVals); %Set ylim correctly
uistack(b1, 'bottom') %Move background below other elements
  댓글 수: 5
Ben
Ben 2022년 9월 16일
I've edited my answer and tested the code locally with your data and think it does what you want.
I think the key understanding here is that you don't need to loop through p. MATLAB allows vector calculations, so you can check every cell in p at once.
out = p < 0.05;
Out will be a logical index (that is, 1 where p < 0.05, 0 otherwise) with the same length as p. You can then plot the logical index with a scaling factor to get the background at a consistent height.
Ben
Ben 2022년 9월 19일
@Muhammad Usman Please mark the question as answered if it has been answered.

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

카테고리

Help CenterFile Exchange에서 Annotations에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by