为简单的绘图制作精确的颜色条

时间:2014-07-04 16:57:03

标签: matlab plot colorbar colormap

我正在尝试制作一个简单的绘图(对于这个例子,做y = x ^ 2的绘图就足够了),我想根据给定一些色彩图的大小来设置点的颜色。

按照我的简单例子说我有:

x = 1:10;
y = x.^2;

使用gscatter(x,y,jet(10)); legend hide; colorbar生成彩色点的图,但颜色条与彩色值不一致。 (不能发布图片,因为这是我的第一篇文章)。使用caxis([1,100])命令可以得到正确的范围,但颜色仍然是关闭的。

所以我有两个问题: (1)如何确定颜色以适应给定范围的颜色条?在我的实际数据中,我正在查看在某些情况下从-50到50的值,并且有更多的数据点。

(2)我想创建一个具有相同点(但在不同轴上)的不同图,我希望这个新图上每个点的颜色与前一个图中的对应颜色相同。如何以编程方式从每个点中提取颜色,以便将其绘制在两组不同的轴上?

我只是将点移动到矩阵中并执行imagesc()命令,但它们不是整数或者同样如此简单的缩放也不会起作用。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

关于第一个问题,您需要将y值插入到色彩映射的线性索引中。类似的东西:

x = 1:10;
y = x.^4;
csize = 128;
cmap = jet(csize);
ind = interp1(linspace(min(y),max(y),csize),1:csize,y,'nearest');
scatter(x,y,14,cmap(ind,:),'filled')
colorbar
caxis([min(y) max(y)])

在这种情况下使用interp1是一种过度杀伤力;你可以直接计算出来。但是,我认为这样更清楚。

我认为它也回答了你的第二个问题,因为你有每个数据点的颜色索引,所以你可以用同样的方式再次使用它。