Error making coherence plots

10 views (last 30 days)
I am wondering what this message means. I have read the neurospec20 document for type 2 analysis, but even after reading that, can't seem to figure out where I'm going wrong with my plots. I am trying to create EMG coherence plots using type 2 analysis. This is my script (which is modeled off of the neurospec20_demos script):
freq=75;
lag_tot=200;
lag_neg=100;
psp2_tf(f,t,cl,freq,lag_tot,lag_neg)
and this is my error:
Error using axes
Axes cannot be a child of ColorBar.
Error in psptf_ch1 (line 142)
axes(H)
Error in psp2_tf (line 77)
psptf_ch1(f,cl,freq,t_inc,n_contour,colorbar_flag,line_flag)
Any advice at all would be much appreciated.

Accepted Answer

Walter Roberson
Walter Roberson on 31 Jan 2022
I had a look at the code, and it is broken for R2014b or later.
The code is doing
H=colorbar;
v=get(H);
axes(H)
for sect_ind=1:n_seg
ch_c95_vector=[v.XLim;cl(sect_ind).ch_c95,cl(sect_ind).ch_c95];
line(ch_c95_vector(1,:),ch_c95_vector(2,:),'Color','k')
end
In R2014a and before, colorbar() created an axes() object and drew a simple image into it. Because it was an axes, it was possible to grab the axes and plot into it, such as to create 95% confidence lines in the color bar.
In R2014b and newer, colorbar() creates Colorbar objects that are not the same as axes objects. I would need to research to find out whether it is possible to draw into them... maybe. But I will not be able to check that until after I have had some sleep. (Perhaps someone else will happen to know while I am sleeping.)
  3 Comments
Walter Roberson
Walter Roberson on 31 Jan 2022
The code is in Neurospec20 (user mention) function psptf_ch1 (in the error message). I think it is intended to draw 95% confidence interval lines directly on the colorbar
Marisa Mulvey
Marisa Mulvey on 4 Feb 2022
Thank you for your help!

Sign in to comment.

More Answers (1)

Walter Roberson
Walter Roberson on 4 Feb 2022
In current releases, if yout take
cb = colorbar();
LS = cb.DecorationContainer.NodeChildren(1).NodeChildren(1)
then LS will be a LineStrip object, which is an undocumented internal MATLAB object.
You can potentially modify LS.VertexData and LS.VertexIndices
The first two rows of LS.VertexData appear to be X and Y coordinates. I have not figured out what the third row means; it is not out of the question that it is Z data (for something that is being viewed from the top.)
So you could potentially add new lines by adding new vertex columns, to draw from where you are up one side of the color area, across to the other side, up that side, then back across to the other side to draw the confidence interval lines. I suspect you would end up adding 4 columns.

Categories

Find more on Colormaps in Help Center and File Exchange

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!