使用Matlab中的函数imagesc,我绘制我的(X,Y,Z)数据-X阵列距离,Y阵列时间和我的数据Z = Z(X,Y)矩阵。
我注意到80%的图像只有一种颜色,因为Z数据的变化只发生在X的末尾几乎所有的Y.
现在我使用colormap('hsv'),这让我想到了最大范围的不同颜色。
我需要将颜色条范围更改为对数范围,以改善视距输出数据随距离X的时间变化的范围。
我也使用过contourf,但我仍然不确定使用此函数是否更好,而不是输出更平滑的imagesc。
请,任何想法,任何方法或任何小脚本,我可以用来在2D中使用imagesc或其他内置函数以对数刻度显示数据的差异,这是非常受欢迎的! 谢谢
答案 0 :(得分:0)
在Mathworks网站上有一个讨论,其中有人提供了一个执行对数颜色条的功能。
https://www.mathworks.com/matlabcentral/newsreader/view_thread/152310
编辑:从链接中复制和粘贴代码
function cbar = colorbar_log(my_clim)
%COLORBAR_LOG Apply log10 scaling to pseudocolor axis
% and display colorbar COLORBAR_LOG(V), where V is the
% two element vector [cmin cmax], sets manual, logarithmic
% scaling of pseudocolor for the SURFACE and PATCH
% objects. cmin and cmax should be specified on a LINEAR
% scale, and are assigned to the first and last colors in
% the current colormap. A logarithmic scale is computed,
% then applied, and a colorbar is appended to the current
% axis.
%
% Written by Matthew Crema - 7/2007
% Trick MATLAB by first applying pseudocolor axis
% on a linear scale
caxis(my_clim)
% Create a colorbar with log scale
cbar = colorbar('Yscale', 'log');
% Now change the pseudocolor axis to a log scale.
caxis(log10(my_clim));
% Do not issue the COLORBAR command again! If you want to
% change things, issue COLORBAR_LOG again.