Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 为contourf定制彩色地图_Matlab_Colormap_Contourf - Fatal编程技术网

Matlab 为contourf定制彩色地图

Matlab 为contourf定制彩色地图,matlab,colormap,contourf,Matlab,Colormap,Contourf,我有一个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]) 但这是不对的。请问,为了得到

我有一个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])

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

我猜,每种颜色的行数应该与每个范围的大小成比例。所以
0
->
0.683
0.683
->
0.9545
大得多。在颜色图中,您只提供了一行,因此Matlab假设这些颜色应在整个范围内平均分配(即
0
->
1
),其中4种颜色表示红色代表
0
->
0.25
,蓝色代表
0.25
->
0.5

尝试以下回答:但不要使用
linspace
,而是使用
repmat
。您需要有足够的行来计算4个小数点的精度(您可能需要重新考虑),因此总共有10000行:

或者:

map = zeros(10000,3);
map(1:6830,1) = 1;
map(6831:9545,3) = 1;
map(9546:9973,2) = 1;
map(9974:end,:) = 1;

那具体是怎么回事?也许你可以上传一张图片并链接到它?另外,请添加一些样本
x
y
z
数据,我们可以直接复制并粘贴到Matlab中。在这个dropbox文件中,我有x,y,z。此外,该图还显示了我使用默认颜色贴图获得的内容以及我使用上面的颜色贴图获得的内容。非常感谢你,丹!我删除了1.0轮廓,它看起来完全像我想要的!对不起,我不能投你一票。我没有足够的声誉。但我接受了答案。我还需要做点什么吗?不,谢谢!如果你有足够的代表性,你可以随时回来投票
map = zeros(10000,3);
map(1:6830,1) = 1;
map(6831:9545,3) = 1;
map(9546:9973,2) = 1;
map(9974:end,:) = 1;