logarithmic range colorbar imagesc

조회 수: 57 (최근 30일)
K. . 2015년 11월 9일
댓글: WANG minhao . 2023년 7월 12일
In my code I use the function imagesc; plotting (X,Y,Z) data in which: X vector distance, Y vector time, and my data Z = Z(X,Y) a matrix. In my plot the 80% of the image has one color, because the change of Z data occurred only in a specific area of X-Y. I need to change the colorbar range, from a normal to a logarithmic one, to improve visual the range of the change of my output data through time along the distance X. Please, if anyone knows how to solve this issue let me know.

답변 (3개)

Kelly Kearney
Kelly Kearney 2015년 11월 9일
You can use my cptcmap.m function to create a logarithmically-spaced colormap (and corresponding colorbar).
However, keep in mind that Matlab requires linearly-spaced color intervals in its colormaps, so my function achieves uneven color intervals by replicating certain colors many times. You may not get the results you want if your values span too many orders of magnitude. For example, to create a colormap where one color spans only 1/1000th of the color range, you need a 1000-color colormap. I believe some systems (Windows?) may limit you to 256 colors in a colormap.
However, if your values span a relatively small range, the following example should work:
x = peaks(200);
x = (x - min(x(:)))./(max(x(:))-min(x(:)));
x = x*9 + 1;
tk = logspace(0,1,10);
cmap = jet(9);
ctable = [tk(1:end-1)' cmap*255 tk(2:end)' cmap*255];
save mycol.cpt ctable -ascii;
ax = axes;
cptcmap('mycol', 'mapping', 'direct');
cptcbar(gca, 'mycol', 'eastoutside', false);
  댓글 수: 4
WANG minhao
WANG minhao 2023년 7월 12일
Good solution! Love from China

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

Image Analyst
Image Analyst 2015년 11월 9일
Use caxis() to specify what image values the colorbar should start at and stop at.
  댓글 수: 1
K. 2015년 11월 9일
I use caxis, I need a logarithmic range of colors related to the range of my data

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

Adam 2015년 11월 9일
편집: Adam 님. 2015년 11월 9일
I would normally solve this problem simply by taking the logarithm of my data and plotting that if simply constraining the colourbar range is not enough.
I'm not sure there is a simply way to show a non-linear colourmap without creating your own colourmap. The mapping is always linear as far as I am aware which would imply you can either make your data logarithmic or you can define a logarithmic colourmap yourself. I don't know how to do the latter off-hand though.
  댓글 수: 6
K. 2015년 11월 10일
this is not a random site! you asked for the data and I sent it to you! is my MEGA box!

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


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


Community Treasure Hunt

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

Start Hunting!

Translated by