具有相应颜色阵列的点的Matlab快速绘图

Matlab fast plotting of points with corresponding color array

我有一个长度为 N 的 X/Y 数据数组,以及一个对应的颜色数组 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. 有没有办法将其绘制为多色线,而不是标记 ('.')

您可以使用 scatter 一次性绘制所有点,每个点使用不同的颜色。颜色值作为第四个参数传递。第三个参数是标记大小(可以是固定的,也可以每个点有不同的值):

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