Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 将彩色贴图传递给散射体3_Matlab_Matlab Figure - Fatal编程技术网

Matlab 将彩色贴图传递给散射体3

Matlab 将彩色贴图传递给散射体3,matlab,matlab-figure,Matlab,Matlab Figure,这是最基本的,但我正在努力给scatter3一张彩色地图。我正在这样做: scatter3(gesture_x(:,1),gesture_x(:,2),gesture_x(:,3),1,colors(labels_x)) 其中colors=['c'、'y'、'm'…]和labels_x=[1 3 3 2..] 如果有人能指出我做错了什么,那就太好了。您不能使用单字符颜色规范来指定每个点使用的颜色数组。MATLAB实际上会将['c','y','m']解释为'cym',而这不是一种有效的颜色,因此

这是最基本的,但我正在努力给
scatter3
一张彩色地图。我正在这样做:

scatter3(gesture_x(:,1),gesture_x(:,2),gesture_x(:,3),1,colors(labels_x))
其中
colors=['c'、'y'、'm'…]
labels_x=[1 3 3 2..]


如果有人能指出我做错了什么,那就太好了。

您不能使用单字符颜色规范来指定每个点使用的颜色数组。MATLAB实际上会将
['c','y','m']
解释为
'cym'
,而这不是一种有效的颜色,因此它会出错

如果查看,则需要通过以下三种方式之一指定颜色:

  • 每个数据点的RGB值(列为红色、绿色和蓝色分量的
    nx3
    数组)
  • 应用于所有点的单一颜色(
    'r'
    'red'
    [1 0]

  • 将使用
    clims
    映射到轴的颜色映射的数字

标记颜色,指定为颜色字符串、RGB行向量、RGB值的三列矩阵或向量。对于RGB行向量,使用三元素行向量,其元素指定颜色的红色、绿色和蓝色分量的强度。强度必须在范围[0 1]内。如果散点图中有三个点,并且希望将颜色索引到colormap中,请指定C作为三元素列向量


不能使用单字符颜色规范指定要用于每个点的颜色数组。MATLAB实际上会将
['c','y','m']
解释为
'cym'
,而这不是一种有效的颜色,因此它会出错

如果查看,则需要通过以下三种方式之一指定颜色:

  • 每个数据点的RGB值(列为红色、绿色和蓝色分量的
    nx3
    数组)
  • 应用于所有点的单一颜色(
    'r'
    'red'
    [1 0]

  • 将使用
    clims
    映射到轴的颜色映射的数字

标记颜色,指定为颜色字符串、RGB行向量、RGB值的三列矩阵或向量。对于RGB行向量,使用三元素行向量,其元素指定颜色的红色、绿色和蓝色分量的强度。强度必须在范围[0 1]内。如果散点图中有三个点,并且希望将颜色索引到colormap中,请指定C作为三元素列向量


这个答案用一个完整的例子补充了现有的优秀答案,并使用了从中获得的信息

我发现应用颜色的最简单方法是通过

从文件(我的重点):

散射体3(X、Y、Z、S、C)使用C指定的颜色绘制每个圆

如果C是RGB三元组或包含颜色的字符向量或字符串 名称,然后使用指定的颜色打印所有圆

如果C是一个三列矩阵,C中的行数等于 X、Y和Z的长度,然后每行C指定一种RGB颜色 对应圆的值

如果C是长度等于X、Y和Z长度的向量,则 C中的值线性映射到当前颜色中的颜色 彩色地图。

下面提供了自定义的完整示例(标记大小控制除外)。


这个答案用一个完整的例子补充了现有的优秀答案,并使用了从中获得的信息

我发现应用颜色的最简单方法是通过

从文件(我的重点):

散射体3(X、Y、Z、S、C)使用C指定的颜色绘制每个圆

如果C是RGB三元组或包含颜色的字符向量或字符串 名称,然后使用指定的颜色打印所有圆

如果C是一个三列矩阵,C中的行数等于 X、Y和Z的长度,然后每行C指定一种RGB颜色 对应圆的值

如果C是长度等于X、Y和Z长度的向量,则 C中的值线性映射到当前颜色中的颜色 彩色地图。

下面提供了自定义的完整示例(标记大小控制除外)。

% Random RGB value for each point
colors = rand(size(gesture_x, 1), 3);

% One color for everything
colors = 'r';
colors = 'red';
colors = [1 0 0];

% Random values mapped to the axes colormap
colors = rand(size(gesture_x,1), 1);
% MATLAB R2017a 
% Data
NumPoints = 25;
X = 100*rand(NumPoints,1);
Y = 100*rand(NumPoints,1);
Z = 100*rand(NumPoints,1);
V = (X + Y);

% Create custom colormap     (2 color example)
col1 = [0 1 0]; %G
col2 = [1 0 0]; %R
cmap = interp1([col1; col2], linspace(1, 2, 101)); % Create the colormap

% Plot
colormap(cmap), hold on, box on
h = scatter3(X,Y,Z,[],V,'filled')
view(-25,25)   % (azimuth,elevation)

% Colorbar Controls
cb = colorbar;
caxis([0 200])    % sets min and max value for color mapping (separate from tick control)
cb.Limits = [0 200];
cb.Ticks = [0:25:200];  % custom set colorbar ticks
cb.Label.String = ' V';
cb.Label.Rotation = 0;   % Default is 90

% Cosmetics
h.MarkerEdgeColor = 'k';     % Set marker edge color to black
xlabel('X')
ylabel('Y')
zlabel('Z')