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.683よりもはるかに大きいです。カラーマップでは、それぞれ1行しか提供していないため、Matlabはこれらの色を全範囲(つまり-> )で均等に割り当てる必要があると想定しています.4色では、赤は-> 、青は->など. .0.6830.95450100.250.250.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 に答える