MATLAB文本框在旋转3D绘图的顶部处于恒定位置?

时间:2014-09-22 18:08:12

标签: matlab text 3d location figure

我正在尝试在旋转图中使用MATLAB中的文本框,但我不希望文本框相对于图形改变其位置。我认为'units','normalized'函数中的text会这样做,但它并不是很有效,如下例所示。我想我可以使用uicontrol,但我想使用希腊字母,我不能让uicontrol看起来像text那样好。以下示例重新创建了我的问题。您会注意到文本框会随着情节的旋转而移动,但我希望它只是停留在它开始的左上角区域。谢谢!

part_x = rand(1000,3)-.5;                         %generate random 3D coordinates to scatter
fig1 = figure;
scatter3(part_x(:,1), part_x(:,2), part_x(:,3))
axis equal vis3d
axis([-1 1 -1 1 -1 1])
set(fig1,'color','w')

for tau = 1:150
    view(tau+20,30);                              %spin the plot
    pause(.01)
    if tau~=1; delete(tau_text); end;             %delete the previous text if it exists
    tau_text = text(.1,.7,...
                    ['\tau = ',num2str(tau)],...
                    'units','normalized',...      %text coordinates relative to figure?
                    'Margin',3,...                %these last 3 lines make it look nice
                    'edgecolor','k',...
                    'backgroundcolor','w');
end

2 个答案:

答案 0 :(得分:3)

您可以使用

legend(['\tau = ',num2str(tau)],'Location','NorthWestOutside')

答案 1 :(得分:0)

谢谢Dev-iL! annotation为此目的比text更好地工作,并且实现非常相似。并且感谢您提供有关修改字符串的建议,而不是删除重新创建字符串。

以下是代码,工作得更好:

part_x = rand(1000,3)-.5;                         %generate random 3D coordinates to scatter
fig1 = figure;
scatter3(part_x(:,1), part_x(:,2), part_x(:,3))
axis equal vis3d
axis([-1 1 -1 1 -1 1])
set(fig1,'color','w')

tau_text = annotation('textbox',[0.2 0.8 0.1 0.05],...
                      'string','',...
                      'Margin',4,...                %these last 4 lines make it look nice
                      'edgecolor','k',...
                      'backgroundcolor','w',...
                      'LineWidth',1);

for tau = 1:150
    view(tau+20,30);                              %spin the plot
    pause(.01)
    set(tau_text,'String',['\tau = ',num2str(tau)]);
end