gpt4 book ai didi

用于按值绘制线图颜色的 matlab colorbar

转载 作者:太空宇宙 更新时间:2023-11-03 20:04:45 33 4
gpt4 key购买 nike

我在 matlab 中有二维线图,其中每条线都根据一个值着色。我想添加一个颜色条,显示与这些值对应的颜色。

我得到了一个根据我想要的值绘制线条的解决方案,但是我无法弄清楚如何正确获取颜色条。我一直在搜索这个,但我被卡住了。

  1. 定义一个 RGB 颜色矩阵 COL。(N x 3 低红色到深色矩阵对应于等距值 0:1)。
  2. 根据数据的 z 值对数据进行排序。
  3. 对 COL 矩阵进行插值以获得所有 z 值的值,为直线提供 TRUECOL 矩阵。
  4. 将 axiscolor-ordering 设置为 TRUECOL 矩阵并绘制数据。

简约的例子:

% Generate 10 lines of 10 points
x = normrnd(0,1,10,10);
% The corresponding values are
% Note that these do not have to linearly spaced in real code
z = [0,0.05,0.1,0.11,0.12,0.2,0.4,0.45,0.8,0.9];
% Define colormatrix
COL = [0.996078431372549 0.878431372549020 0.823529411764706;...
0.937254901960784 0.231372549019608 0.172549019607843;...
0.403921568627451 0 0.0509803921568627];
% Interpolate the COL matrix to get colors for the data
TRUECOL = interp1(linspace(0,1,3),COL,z,'pchip');
% Set the axis coloring qnd plot the data
set(gcf,'DefaultAxesColorOrder',TRUECOL);
plot(x);
colormap(TRUECOL);
colorbar

然后我更改颜色图并绘制颜色条,但是颜色条中的颜色与值 z 不对应。有没有办法告诉 matlab 哪种颜色对应哪个值?查看 colorbar 编辑器,我发现 CData 一定与它有关,但我找不到一种方法来指定 CData 应该是 z。

最佳答案

我的理解是,您希望颜色条上的标签从 0 变为 1,而不是从 0 变为 11。要解决此问题,请使用此 caxis 命令。要在颜色栏中获得更精细的颜色渐变,您需要更精细地插值颜色图。试试这个:

colormap(interp1(linspace(0,1,size(COL,1)), COL, linspace(0,1,100)));
caxis([0,1]);
colorbar

enter image description here

关于用于按值绘制线图颜色的 matlab colorbar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23657345/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com