线图的matlab颜色条按值着色

Posted

技术标签:

【中文标题】线图的matlab颜色条按值着色【英文标题】:matlab colorbar for lineplot colored by value 【发布时间】:2014-07-02 16:01:07 【问题描述】:

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

我得到了一个解决方案,可以根据我想要的值绘制线条,但是我无法正确获取颜色条。我一直在寻找这个,但我被困住了。

    定义一个 RGB 颜色矩阵 COL。 (N x 3 低红色到深色矩阵对应于等距值 0:1)。 根据 z 值对数据进行排序。 对 COL 矩阵进行插值以获得所有 z 值的值,从而为线提供 TRUECOL 矩阵。 将轴颜色排序设置为 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

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

【问题讨论】:

你能通过添加颜色图的变化和颜色条的绘图来完成你的例子吗? 颜色条颜色和线条颜色看起来大致相似。 “不对应”是什么意思? 我更改了 z 值以使其更清晰。到颜色条的范围从 1 到 11(这可以通过 CLim 属性进行更改)。如果您打开颜色栏编辑器,您可以看到颜色栏中的颜色以 0.1 的步长线性映射。我想用颜色条显示与 TRUECOL 矩阵中的颜色相对应的实际 z 值。因此插值的结果。 MATLAB 无法自动执行的简单事情的巨大列表中的另一项" :-/ 【参考方案1】:

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

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

【讨论】:

以上是关于线图的matlab颜色条按值着色的主要内容,如果未能解决你的问题,请参考以下文章

Photoshop制作仿等高线着色图

powerbisvg地图无法着色

phyloseq箱线图的变量着色

使用与地面实况定义相同的颜色为集群着色以进行可视化

如何对两个折线图之间的区域进行着色

如何根据时间序列折线图上的最后一个值着色?