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
在曲面顶部绘制标签颜色为白色/红色的点。