我正在尝试在旋转图中使用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
答案 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