Книга, которую я читаю, содержит следующую диаграмму.MATLAB: заполнение области между несколькими линиями
Я ищу как можно более точно воспроизвести следующую диаграмму в 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
С fill(F,H,colour_now)
вынимают код прекрасно воссоздает требуемые строки. Однако заполнение неверно.
Этот heavily upvoted answer от @Doresoom кажется уместным, но он немного отличается, потому что в этом примере значения x сохраняются постоянными, в то время как в моем случае это значения y, которые сохраняются постоянными. Кроме того, в этом случае есть только пара строк, в то время как у меня их много.
Это работает блестяще! Знаете ли вы, есть ли простой способ заполнить верхние левые и нижние правые секции, т. Е. Участки в фиолетовом и темно-синем на исходной диаграмме? – user1205197
Я отредактировал вопрос. он должен выполнять эту работу сейчас – shamalaia