Контур Matlab с постепенным изменением цвета

близкие,

У меня есть матрица изображений, и я создал следующую фигуру, используя

contourf(my_matrix)
colorbar

введите здесь описание изображения

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

Большое спасибо за вашу помощь.


person nos    schedule 19.03.2013    source источник
comment
Я хочу добавить еще несколько слов. Будьте осторожны с применением таких методов, как «затенение интерполяции», потому что, как вы, вероятно, знаете, интерполяция означает добавление новых точек, создание новых данных. Если мы посмотрим на опубликованную вами цифру, мы понимаем, что вы рисуете поле только с десятью различными значениями. Я предлагаю вам всегда использовать такие команды, как «imagesc», которые отображают исходные значения, если только ваш приоритет не является эстетикой фигуры, а не базовыми данными.   -  person Matteo De Felice    schedule 22.03.2013


Ответы (2)


Решение Cinico не сработало для меня. Вот что я использовал:

% Set Data
data = (1:100)'*(1:100);

figure;
subplot(1,2,1)
% Binned Color
contourf(data);
subplot(1,2,2)
% Gradual Color
pcolor(data);
hold on;
shading interp; 
contour(data,'LineColor','k')

Выход:

введите здесь описание изображения

person Justin    schedule 20.03.2013

попробуйте команду shading interp после завершения сюжета

но...

наиболее вероятно, что ваши данные не "постепенные". Я имею в виду: либо у вас есть значение 2, либо 4, либо 10 и т. д., а не 2,2, или 4,6, или 10,1 и т. д.

Таким образом, у вас не может быть промежуточных цветов, потому что это означало бы, что у вас будут промежуточные значения (которых у вас нет).

person cinico    schedule 19.03.2013
comment
Джастин прав. Я не заметил, что вы используете контур. Этот тип графика не позволяет интерполировать цвета. На самом деле вы можете использовать shading interp, как я предложил, если вы делаете график pcolor. - person cinico; 21.03.2013