【问题标题】:How to use only a part of an existing colormap?如何仅使用现有颜色图的一部分?
【发布时间】:2018-09-21 03:56:19
【问题描述】:

我正在使用颜色图来可视化一些数据:

DataToPlot = pcolor(myData);
set(DataToPlot,'edgecolor','none'); %to remove grid
colormap(flipud(spring));
caxis([-4 4]);
colorbar;

目前与值-4 关联的颜色是黄色,而与+4 关联的颜色是亮粉色。我想修改这个比例并将与-4 关联的颜色设为0(浅粉色)的颜色,并将与+4 关联的颜色保留为亮粉色。

我该怎么做?

【问题讨论】:

  • caxis 可能是您需要的。否则,获取颜色图,将其裁剪到您想要的位置,然后将其设置为颜色图
  • 要详细说明 Ander 的评论 - 假设您只想要 HSV 颜色图的红色->绿色部分,您可以执行类似 cm = hsv(300); cm = cm(1:100,:); colormap(cm); 的操作
  • @Dev-iL,谢谢,非常有帮助。只是一个问题,对不起,如果是基础知识,但是您如何知道要选择的值(在您的示例中为 300 和 1:100)?每个颜色图都有索引吗?谢谢。
  • 我只是喜欢视觉上平滑的颜色图,所以我通常使用至少 100 种颜色。只看颜色图对我来说似乎大约是 1/3 - 因此,要获得 100 个条目长的颜色图,我需要创建一个 300 长的颜色图并获得前三分之一。

标签: matlab visualization data-visualization matlab-figure colormap


【解决方案1】:

让我们考虑以下示例:

figure(); imagesc(magic(4)-8); colorbar;
% Flipped "spring" colormap:
cm = flipud(spring); colormap(cm);

现在我们有了:

如果我们只想要颜色图的子集(例如黄色到粉红色),我们可以获取spring 返回的数组行的子集:

cm = flipud(spring(200)); colormap(cm(1:100,:));

其中200 是我们想要得到的颜色图的分辨率,100 大约是我们想要剪切的地图的位置,产生:

如果我们想重新缩放颜色图(或者换句话说,改变数据到颜色的映射,使得最小值/最大值不对应底部/顶部颜色),我们可以使用caxis 函数来设置不同的颜色图的限制。例如:

cm = flipud(spring); colormap(cm); caxis([-7 24]);

使用完整的颜色图产生相同的数据着色:

奖励:别忘了你还可以组合不同的颜色图:

cm = [flipud(bone(50)); copper(50)]; colormap(cm);

【讨论】:

  • 这是一个非常全面的答案。谢谢!你知道 Matlab 实际使用多少种颜色来创建颜色图?例如,如果我们有一个从 -4 到 +4 的颜色图,Matlab 是否使用 800 种颜色(即每个单元 100 种颜色)?只是好奇。
  • 嗯,很容易检查...只需输入cm = spring 并查看输出的大小。结果并不完全符合您的预期:)
  • 完美,非常感谢!
  • 我已经尝试了您显示的最后一个代码,这非常好。但是如果我这样做了:mySpring = spring(400); mySpring = mySpring(1:200,:); colormap(flipud(mySpring)); myBone = bone(400); myBone = myBone(1:200,:); colormap(myBone); cm = [myBone(50);flipud(mySpring(50))]; colormap(cm); 我得到这个错误:Error using colormap (line 93) Colormap must have 3 columns: [R,G,B]. 你知道为什么吗?
  • @dede 你不能这样做,因为函数springbone 不是简单的二维数组,而是执行一些计算。您可以打开其中任何一个,看看它是如何工作的。如果您想修复您的示例,请确保使用mySpring(1:50,:) 而不仅仅是mySpring(50)spring(50) 返回一个 50x3 数组,而 mySpring(50) 是一个标量。
猜你喜欢
  • 1970-01-01
  • 2020-05-14
  • 1970-01-01
  • 1970-01-01
  • 2018-02-13
  • 2018-11-01
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
相关资源
最近更新 更多