#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. Что вы подразумеваете под многоцветной линией? Какого цвета должен быть отрезок между двумя точками?
Ответ №1:
Вы можете использовать scatter
для построения всех точек за один раз, с разным цветом для каждой точки. Значения цвета передаются в качестве четвертого аргумента. Третий аргумент-размер маркера (который может быть фиксированным, или он также может иметь разное значение для каждой точки):
xy_data = rand(1000, 2);
colors = rand(1000, 3);
scatter(xy_data(:, 1), xy_data(:, 2), 30, colors, '.')