【问题标题】:How to assign a specific color that doesn't change through looping, to each element of a 3D array如何将不通过循环改变的特定颜色分配给 3D 数组的每个元素
【发布时间】:2016-06-09 17:05:49
【问题描述】:

首先我想指出,虽然我对语法有所了解,但我还是个使用 MATLAB 的初学者。我正在做一个项目,试图绘制环境中粒子的位移。我已经操纵了所有数据,所以这一切都取决于美学。 所以基本上我有两个矩阵 12 x 19 x 15,其中粒子的坐标(纬度,经度)是时间步长。所以粒子的位置会随着时间而改变。现在我希望以这样一种方式绘制它,即在第一个时间步每个元素(所以 12 x 19,尽管数组中有很多零和 NaN)都有它自己的颜色,在下一个时间步不会改变。这样您就可以跟踪粒子的运动。请注意,我正在使用两个矩阵(一个用于纬度,另一个用于经度,给出粒子的位置)。所以绘图看起来像这样

for it=1:nt
    plot(lat(:,:,it), long(:,:,it), 's'); hold on; 
end

如果在前一个位置和新位置之间的每个连续时间步中都绘制一条连接线,那就太好了。

我遇到了这个问题,因为当我在plot() 中分配颜色时,所有元素都有自己的颜色。此外,当我尝试画线时,时间步长中的所有元素都会相互连接,这一切都是一团糟。我可以只为一个粒子做,但如果我引入很多它就行不通了。

【问题讨论】:

    标签: arrays matlab dictionary colors


    【解决方案1】:

    尝试使用 scatter(documentation here)

    或持有所有而不是持有

    【讨论】:

    • Scatter 不允许我这样做可能是因为我正在绘制来自两个矩阵的数据?
    【解决方案2】:

    这解决了它。干杯

    colors = hsv(19);
    for i = 1 : 12
    for j = 1 : 19
        x = squeeze(MH.xn(i,j, :));
        y = squeeze(MH.yn(i,j, :));
        plot(x, y, 'color', colors(j, :)); hold on;
        for k = 1 : size(x, 1)
           plot(x(i), y(i), 'd', 'MarkerSize', 10, 'color', colors(j, :));
        end
    end
    

    【讨论】:

      猜你喜欢
      • 2019-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      相关资源
      最近更新 更多