2015-07-28 5 views
1

Я хотел бы нарисовать различные кривые на этом же рисунке и покрасить область между соответствующей кривой и заданным базовым значением.Раскраска ниже кривой в Matlab

Вот это игрушка пример кода, который я надеялся, что работал, но по какой-то причине функция area не работает так, как я бы ожидать:

x = 0:1/30:30; 
y = sin(x); 

figure 
hold on 
for i = 1:3:10 
    area(x,y+i,i) 
end 

Что бы ожидать, и нужно что-то вроде этого : enter image description here

Однако то, что Matlab замышляет заключается в следующем: enter image description here

является ли это слишком поздно, и я должен идти спать или что т здесь проблема?

+0

Когда я скопировал ваш код в Matlab, он создал сюжет, похожий на первый. –

+0

@CalvinWhealton У меня такая же проблема. Кажется, что всякий раз, когда вызывается команда «area (x, y + i, i)» после первого, «уровень» предыдущего изменяется на новый. – sodiumnitrate

+0

Просто из любопытства, какую версию вы используете? – sodiumnitrate

ответ

1

просто использовать fill или patch вместо area:

x = linspace(0,10*pi) 
y = sin(x); 

figure 
hold on 
for i = 1:3:10 
    patch(x,y+i,i); 
end 

enter image description here

к сведению, что я изменил предел х так у закончится на том же значении, что началось с, чтобы получить пересекла вертикальную линию. Для более общего лечения смотрите here.

+0

Спасибо за решение @bla. Но вы уже указали, что усложняет ситуацию: следы не всегда заканчиваются на одну и ту же ценность, и поэтому их нужно учитывать. Вот почему я хотел использовать область, поскольку функция должна это предоставить. В любом случае, в 2014 году он работает так, как ожидалось, и теперь у меня есть результат, хотя ответа, почему он не работал, пока не найден. Спасибо за ссылку на areashade. Это выглядит многообещающе! – TheodorBecker

Смежные вопросы