Быстрое построение точек в Matlab с соответствующим цветовым массивом

#matlab #matlab-figure

Вопрос:

У меня есть массив данных X/Y длиной N и соответствующий цветовой массив Nx3. Я надеюсь раскрасить график данных X/Y на основе соответствующего цвета в цветовом массиве.

Размер одного массива XY составляет >100000, и у меня есть много массивов для построения, поэтому я надеюсь найти быстрое решение для этого.

Пример того, как я в настоящее время делаю это в цикле

 xy_data = zeros(100000, 2);
colors = zeros(100000, 3);
figure;
hold on
for i = 1:length(xy_data)
    plot(xy_data(i, 1), xy_data(i, 2), '.', 'color', colors(i, :));
end
 

Технически это работает, но может быть довольно медленным, особенно когда есть много точек данных и много массивов xy для построения.
Мне интересно, если

  1. есть ли более быстрый способ?
  2. Есть ли способ отобразить его в виде многоцветной линии, а не маркеров («.»)?

Комментарии:

1. Что вы подразумеваете под многоцветной линией? Какого цвета должен быть отрезок между двумя точками?

Ответ №1:

Вы можете использовать scatter для построения всех точек за один раз, с разным цветом для каждой точки. Значения цвета передаются в качестве четвертого аргумента. Третий аргумент-размер маркера (который может быть фиксированным, или он также может иметь разное значение для каждой точки):

 xy_data = rand(1000, 2);
colors = rand(1000, 3);
scatter(xy_data(:, 1), xy_data(:, 2), 30, colors, '.')
 

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