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
不能使用单字符颜色规范指定要用于每个点的颜色数组。MATLAB实际上会将
['c','y','m']
解释为'cym'
,而这不是一种有效的颜色,因此它会出错
如果查看,则需要通过以下三种方式之一指定颜色:
- 每个数据点的RGB值(列为红色、绿色和蓝色分量的
数组)nx3
- 应用于所有点的单一颜色(
或'r'
或'red'
)[1 0]
- 将使用
映射到轴的颜色映射的数字clims
这个答案用一个完整的例子补充了现有的优秀答案,并使用了从中获得的信息 我发现应用颜色的最简单方法是通过 从文件(我的重点): 散射体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')