标记散点数据点

时间:2015-11-26 10:31:32

标签: 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);

但标签数据不清楚 enter image description here

如何清除这些标签?

更改为'Color', 'black', 'FontSize', 14)后仍然  标签显示为

enter image description here
  他们还不清楚。

3 个答案:

答案 0 :(得分:4)

好吧,现在我明白了: 使用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')

enter image description here

enter image description here

答案 1 :(得分:3)

使用text命令的background属性:

text(0,1,'Hi the first point','background',[1 230/255 230/255]);

enter image description here

答案 2 :(得分:2)

为了使文字在表面上方显示,您需要更改text本身的坐标。这有点复杂,需要一些视觉确认,但它看起来像这样:

enter image description here

我使用以下代码:

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);

您必须在视觉上确认文本相对于地图的位置,并相应地更改dxdydz。请注意,在旋转绘图时,文本可能会在表面后面。

其他答案中提到的文字属性(例如backgroundFontWeight)可以帮助您在图表上显示文字,此外还有将文字带到前面的方式。