2

我有一个 3d 函数,想在[0.683 0.9545 0.9973]. 我希望该区域0->0.683用红色填充,0.683->0.9545为蓝色,0.9545->0.9973为绿色,0.9973->1.0为白色。

所以基本上我有以下几点:

contours = [0.0 0.683 0.9545 0.9973 1.0]
contourf(x,y,z,contours)

并尝试过

colormap([1 0 0; 0 0 1; 0 1 0; 1 1 1])

但这是不对的。请问,为了获得我想要的颜色,我的颜色图应该是什么样子?

4

1 回答 1

1

猜测一下,我会说您需要每种颜色的行数与每个范围的大小成正比。所以0->0.6830.683->大很多0.9545。在您的颜色图中,您每人只提供了一行,因此 Matlab 假设这些颜色应在整个范围内(即0-> 1)平均分配,其中 4 种颜色表示红色用于0-> 0.25,蓝色用于0.25->0.5等。 .

试试这样的答案:如何以编程方式创建自定义颜色图?但不是使用linspace,而是使用repmat。您需要有足够的行来说明小数点后 4 位的精度(您可能需要重新考虑),因此您总共将拥有10 000行:

red = repmat([1 0 0], 6830, 1);
blue = repmat([0 0 1], 9545 - 6830, 1);
green = repmat([0 1 0], 9973 - 9545, 1);
white = repmat([1 1 1], 10000 - 9973 , 1);

map = [red;blue;green;white];
colormap(map);

或者:

map = zeros(10000,3);
map(1:6830,1) = 1;
map(6831:9545,3) = 1;
map(9546:9973,2) = 1;
map(9974:end,:) = 1;
于 2015-06-11T12:18:28.370 回答