标记散点数据点
Labelling scatter data points
我有一个曲面图,我在上面绘制了一些点。现在我想标记每个点。我使用了以下代码。
name={'point1','point2','point3','point4','point5'}
co=[0 0 0];
scatter3(X,Y,Z,[],co,'filled');
c=cellstr(name);
dx = 0.1; dy = 0.1;
dz=0.1;
text(X+dx, Y+dy,Z+dz, c);
但标签数据不清楚。
我怎样做才能使这些标签清晰?
更改为'Color', 'black', 'FontSize', 14)
后仍然如此
标签显示为
还是不清楚。
使用文本命令的背景属性:
text(0,1,'Hi the first point','background',[1 230/255 230/255]);
为了使文本显示在上方 表面,您需要更改text
本身的坐标。这有点复杂,需要一些视觉确认,但它看起来像这样:
我在哪里使用了以下代码:
data = rand(5,3);
X=data(:,1);
Y=data(:,2);
Z=data(:,3);
figure;scatter3(X,Y,Z)
hold on
name={'point1','point2','point3','point4','point5'}
c=cellstr(name);
dx = -0.1; dy = -0.1;
dz=0.2;
text(X+dx, Y+dy,Z+dz, c);
您必须通过视觉确认文本相对于情节的位置,并相应地更改 dx
、dy
和 dz
。请注意,当您旋转时,绘图文本可能会隐藏在表面之后。
文本属性,例如其他答案中提到的 background
和 FontWeight
,除了这种将文本置于最前面的方式之外,还有助于使您的文本在图表上可读。
好的,现在我明白了:
使用 set(gca,'SortMethod','childorder')
我在下面添加了一个例子
name={'<-point1','<-point2','<-point3','<-point4','<-point5'};
co=[0 0 0];
X = repmat([1:10],1,10);
Y = sort(repmat([1:10],1,10));
Z = X.*Y;
X2 = repmat([1:10],10,1);
Y2 = X2';
Z2 = X2.*Y2;
figure
hold on
surf(X2,Y2,Z2);
set(gca,'View',[-45 30])
scatter3(X,Y,Z,[],co,'filled');
c=cellstr(name);
dx = 0.3; dy = -0.2;
dz=0.1;
%text(X(51:55)+dx, Y(51:55)+dy,Z(51:55)+dz, c,'BackgroundColor',[1 1 1]);
text(X(51:55)+dx, Y(51:55)+dy,Z(51:55)+dz, c,'Color','white','Fontweight','bold');
scatter3(X(51:55),Y(51:55),Z(51:55),[],ones(5,3),'filled','MarkerEdgeColor','k');
set(gca,'SortMethod','childorder')
我有一个曲面图,我在上面绘制了一些点。现在我想标记每个点。我使用了以下代码。
name={'point1','point2','point3','point4','point5'}
co=[0 0 0];
scatter3(X,Y,Z,[],co,'filled');
c=cellstr(name);
dx = 0.1; dy = 0.1;
dz=0.1;
text(X+dx, Y+dy,Z+dz, c);
但标签数据不清楚。
我怎样做才能使这些标签清晰?
更改为'Color', 'black', 'FontSize', 14)
后仍然如此
标签显示为
还是不清楚。
使用文本命令的背景属性:
text(0,1,'Hi the first point','background',[1 230/255 230/255]);
为了使文本显示在上方 表面,您需要更改text
本身的坐标。这有点复杂,需要一些视觉确认,但它看起来像这样:
我在哪里使用了以下代码:
data = rand(5,3);
X=data(:,1);
Y=data(:,2);
Z=data(:,3);
figure;scatter3(X,Y,Z)
hold on
name={'point1','point2','point3','point4','point5'}
c=cellstr(name);
dx = -0.1; dy = -0.1;
dz=0.2;
text(X+dx, Y+dy,Z+dz, c);
您必须通过视觉确认文本相对于情节的位置,并相应地更改 dx
、dy
和 dz
。请注意,当您旋转时,绘图文本可能会隐藏在表面之后。
文本属性,例如其他答案中提到的 background
和 FontWeight
,除了这种将文本置于最前面的方式之外,还有助于使您的文本在图表上可读。
好的,现在我明白了:
使用 set(gca,'SortMethod','childorder')
我在下面添加了一个例子
name={'<-point1','<-point2','<-point3','<-point4','<-point5'};
co=[0 0 0];
X = repmat([1:10],1,10);
Y = sort(repmat([1:10],1,10));
Z = X.*Y;
X2 = repmat([1:10],10,1);
Y2 = X2';
Z2 = X2.*Y2;
figure
hold on
surf(X2,Y2,Z2);
set(gca,'View',[-45 30])
scatter3(X,Y,Z,[],co,'filled');
c=cellstr(name);
dx = 0.3; dy = -0.2;
dz=0.1;
%text(X(51:55)+dx, Y(51:55)+dy,Z(51:55)+dz, c,'BackgroundColor',[1 1 1]);
text(X(51:55)+dx, Y(51:55)+dy,Z(51:55)+dz, c,'Color','white','Fontweight','bold');
scatter3(X(51:55),Y(51:55),Z(51:55),[],ones(5,3),'filled','MarkerEdgeColor','k');
set(gca,'SortMethod','childorder')