Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.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/4/macos/8.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:填充多行之间的区域_Matlab_Plot_Fill - Fatal编程技术网

MATLAB:填充多行之间的区域

MATLAB:填充多行之间的区域,matlab,plot,fill,Matlab,Plot,Fill,我正在读的一本书包含以下图表 我希望在MATLAB中尽可能地复制下图。我设法重现了线条,但在填充颜色时遇到了困难 possible_colours = {'r','g','b','c','m','y','w','k','r'}; H = [0.01:0.01:0.99]; colour_counter = 0; for ii = -0.8:0.2:0.8 colour_counter = colour_counter + 1; colour_now = possible_

我正在读的一本书包含以下图表

我希望在MATLAB中尽可能地复制下图。我设法重现了线条,但在填充颜色时遇到了困难

possible_colours = {'r','g','b','c','m','y','w','k','r'};

H = [0.01:0.01:0.99];

colour_counter = 0;

for ii = -0.8:0.2:0.8
    colour_counter = colour_counter + 1;
    colour_now = possible_colours{colour_counter};
    ORSS = ones(1,size(H,2))*ii;
    F = (H .* (1-ORSS)) ./ ((1-2.*H) .* ORSS + 1);
    hold on    
    plot(F,H)
    fill(F,H,colour_now);    
end
使用
填充(F,H,color\u now)
取出代码,即可完美地重现所需的行。但是,填充不正确


@Doresoom的这一点似乎相关,但有点不同,因为在那个例子中,x值保持不变,而在我的例子中,y值保持不变。另外,在这种情况下,只有一对线,而我有很多线。

我认为这是一个解决方案:

%possible_colours = {'r','g','b','c','m','y','w','k','r'};
possible_colours = {'r','g','b','c','r','k','w','y','m'};

H = [0.01:0.01:0.99];

figure; hold on
fill([0 1 1],[0 0 1],colorlowerhalf)
fill([0 1 0],[0 1 1],colorupperhalf)

colour_counter = 0;

for ii = -0.8:0.2:0
    colour_counter = colour_counter + 1;
    colour_now = possible_colours{colour_counter};
    ORSS = ones(1,size(H,2))*ii;
    F = (H .* (1-ORSS)) ./ ((1-2.*H) .* ORSS + 1);
    hold on    
    plot(F,H)
    fill(F,H,colour_now);    
end

for ii = 0.8:-0.2:0
    colour_counter = colour_counter + 1;
    colour_now = possible_colours{colour_counter};
    ORSS = ones(1,size(H,2))*ii;
    F = (H .* (1-ORSS)) ./ ((1-2.*H) .* ORSS + 1);
    hold on    
    plot(F,H)
    fill(F,H,colour_now);    
end
它允许避免填充区域的重叠

但要填充的区域的定义仍然存在一些问题

为此,您需要重新定义
H

H = [0:0.01:1];

我认为这是一个解决方案:

%possible_colours = {'r','g','b','c','m','y','w','k','r'};
possible_colours = {'r','g','b','c','r','k','w','y','m'};

H = [0.01:0.01:0.99];

figure; hold on
fill([0 1 1],[0 0 1],colorlowerhalf)
fill([0 1 0],[0 1 1],colorupperhalf)

colour_counter = 0;

for ii = -0.8:0.2:0
    colour_counter = colour_counter + 1;
    colour_now = possible_colours{colour_counter};
    ORSS = ones(1,size(H,2))*ii;
    F = (H .* (1-ORSS)) ./ ((1-2.*H) .* ORSS + 1);
    hold on    
    plot(F,H)
    fill(F,H,colour_now);    
end

for ii = 0.8:-0.2:0
    colour_counter = colour_counter + 1;
    colour_now = possible_colours{colour_counter};
    ORSS = ones(1,size(H,2))*ii;
    F = (H .* (1-ORSS)) ./ ((1-2.*H) .* ORSS + 1);
    hold on    
    plot(F,H)
    fill(F,H,colour_now);    
end
它允许避免填充区域的重叠

但要填充的区域的定义仍然存在一些问题

为此,您需要重新定义
H

H = [0:0.01:1];

真是太棒了!你知道有没有什么简单的方法来填充左上角和右下角的部分,即原始图表中紫色和深蓝色的部分?这非常有效!你知道有没有什么简单的方法来填充左上角和右下角的部分,即原始图表中紫色和深蓝色的部分?