Можно ли добавить цвет градиента в 2-мерную линию в Matlab, особенно если у вас небольшое количество точек данных (менее 10?), Поэтому результат будет похож на один на изображении ниже?Цвет двухмерного градиента линии в Matlab
3
A
ответ
2
Это не сложно, если у вас есть MATLAB R2014b или более поздней версии.
n = 100;
x = linspace(-10,10,n); y = x.^2;
p = plot(x,y,'r', 'LineWidth',5);
% modified jet-colormap
cd = [uint8(jet(n)*255) uint8(ones(n,1))].';
drawnow
set(p.Edge, 'ColorBinding','interpolated', 'ColorData',cd)
Какие результаты в:
Выдержки из Undocumented Features - Color-coded 2D line plots with color data in third dimension. Оригинальный автор был thewaywewalk. Сведения о атрибуции можно найти на странице contributor page. Источник лицензирован под номером CC BY-SA 3.0 и может быть найден в Documentation archive. Номер ссылки: 2383 и пример ID: 7849.
1
Вот один из возможных подходов: явно выстроить каждый сегмент линии с другим цветом, взятым из нужной цветовой карты.
x = 1:10; % x data. Assumed to be increasing
y = x.^2; % y data
N = 100; % number of colors. Assumed to be greater than size of x
cmap = parula(N); % colormap, with N colors
linewidth = 1.5; % desired linewidth
xi = x(1)+linspace(0,1,N+1)*x(end); % interpolated x values
yi = interp1(x,y,xi); % interpolated y values
hold on
for n = 1:N
plot(xi([n n+1]), yi([n n+1]), 'color', cmap(n,:), 'linewidth', linewidth);
end
+1
Спасибо, @ Luis Mendo! –
Спасибо за решение! –