Matlab 标记分散数据点
我有一个曲面图,在上面我画了一些点。现在我想给每个点贴上标签。我使用了以下代码Matlab 标记分散数据点,matlab,scatter-plot,surface,Matlab,Scatter Plot,Surface,我有一个曲面图,在上面我画了一些点。现在我想给每个点贴上标签。我使用了以下代码 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); 但是标签数据不清晰 我该怎么做才能使这些标签清晰 仍然在更改为“颜色”、“黑色”
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);
但是标签数据不清晰我该怎么做才能使这些标签清晰
仍然在更改为“颜色”、“黑色”、“字体大小”14)之后 标签显示为
仍然不清楚。使用text命令的background属性:
text(0,1,'Hi the first point','background',[1 230/255 230/255]);
为了使文本显示在曲面上方,您需要更改
文本本身的坐标。这有点复杂,需要一点视觉确认,但看起来是这样的:
我使用了以下代码:
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
和fontwweight
,除了可以将文本置于前面之外,还可以帮助使您的文本在图形上可读。好的,现在我知道了:
使用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={'text(…,'Color','white','FontSize',14)
根据需要更改白色
和14
。@IKavanagh我更改为'Color'、'black'、'FontSize',14
。但标签仍然不清楚。我在帖子中包含了新的绘图。我认为这两个答案都没有解决全部问题:即文本似乎与绘图相互交织。无论背景如何d
-属性,这将发生。我的建议是手动将文本标签提升到绘图上方,即降低x
和y
坐标,并在该视图中增加z
坐标。不过,您必须事先知道绘图的视图,但至少可以将文本置于图形顶部。@Adrian是的,我让dz=0.2;现在它可以工作了。谢谢。但是标签看起来有点偏离主题了。@Adrian谢谢。我已经做了h=text(X+dx,Y+dy,Z+dz,c,'Color','black','FontSize',14,'BackgroundColor','BackgroundColor',[11],'fontwweight','bold');uistack(h,'top'))但仍然显示这些点,就好像我删除了表面图,然后正确地显示了标签。这似乎是我手工工作的通用版本,很酷!我可以建议你删除<代码>关闭< /代码>和<代码>清除>代码>语句,因为人们在自己的进程中复制这个代码。RAM可能会遇到问题。还有:上传图片,因为图形看起来不错,可以让你投票;“AdRiaa:删掉它。我总是喜欢独立代码版本,但是当然,代码中间的一个清晰是没有帮助的。”很难看出每个标签涉及哪些点。现在你有了这个白色背景,我可以建议颜色吗?每次都会使用一些随机颜色来调整标签的字体和点的颜色?@Dev iL right:我添加了第二个版本,没有添加任何颜色background@horseshoe另一个版本看起来不错,但是如果你试图解决我提到的问题,这不是我想要的…因为它仍然很难(不可能?)要知道标签与哪个点相关。我的意思是,也许你应该创建另一个,scatter
在曲面顶部绘制标签颜色为白色/红色的点。