如何为散点函数中的每个值分配颜色 - GNU Octave

How to assign colors to each value in scatter function - GNU Octave

如何使用 GNU Octave 中的 scatter 函数为每个绘制值分配颜色?

您必须更改颜色图和八度散布的第 4 个参数。参数是向量 1xn 索引色图。您最多可以拥有 255^3 个向量。以及如何做到这一点?

示例解决方案:

  1. 设置颜色图(矩阵 3 x n),它将包含每种颜色的颜色
  2. 用作第 4 个参数向量,它包含每个数字,并且具有与 x 和 y 相同的大小

clf;
x = randn (100, 1);
y = randn (100, 1);
cmap=[];
for R = 1:255
  for G = 1:255
    for B = 1:255
      if (size(cmap) ./ [1,3] == size(x))
        break;
      endif
      cmap=[cmap;R/255,G/255,B/255];

    endfor
    if (size(cmap) ./ [1,3] == size(x))
        break;
    endif
  endfor 
 if (size(cmap) ./ [1,3] == size(x))
        break;
 endif 
endfor

colormap(cmap);

scatter(x,y,20, 1:100);

这是一个很好的说明性示例:

X = linspace(0, 4 * pi, 100);                       % Create points (100 elements)
Y = 100 * sin(X); 

S = Y + 100;                                        % Sizes array. All values need 
                                                    % to be larger than 0

C = [linspace(0,1,100); ones(1,100); ones(1,100)]'; % create hsv triplets at full 
                                                    % saturation and value that
                                                    % cover the whole colour 
                                                    % (i.e. hues) spectrum

C = hsv2rgb(C);                                     % convert to rgb triplets; to
                                                    % be used as a 'colour array'

scatter(X,Y,S,C,'filled','MarkerEdgeColor','k');    % fill bubbles, black border