matlab 根据图形而非数据定位文本(绝对位置)

wpx232ag  于 2023-11-21  发布在  Matlab
关注(0)|答案(1)|浏览(189)

代码和结果如下;我希望在右边的图像t=5是在左边的图像,所有的view-所以,在相同的绝对位置的位置文本,即相同的相对于 * 图 *。
Python的Plotly允许通过fig.update_layout(title={'text': 't=5'})实现这一点。text(, 'Units', 'normalized')'Units', 'pixels'并不总是有效。
这可以做到吗?
x1c 0d1x的数据

[X, Y, Z] = ndgrid(linspace(-8,8,40), linspace(-8,8,40), linspace(-8,8,40));
D = X.*Y.*Z;
D = D * (100 / max(D, [], 'all'));

for ii = 10:10:100
    patch(isosurface(D, ii, D), 'FaceColor', 'interp', 'LineStyle', 'none')
end
text(30, 20, -10, 't=5')
view([3 1 1])

字符串

dfuffjeb

dfuffjeb1#

一个解决方案是text对象使用'normalized'单位
相对于轴归一化。轴的左下角Map到(0,0),右上角Map到(1,1)
显然,这里所指的轴不是图形的“数学”(3D)轴,而是图中发生绘图的矩形的“画布”(2D)轴。
所以你可以
1.创建text对象,使用默认的('data')单位,并将其分配给变量;
1.设置view(这会影响'data'单位和'normalized'单位之间的关系);然后
1.转换为'normalized'单位,使用步骤1中的变量。
这样,代码的最后几行变为

t = text(30, 20, -10, 't=5');  % step 1
view([3 1 1])                  % step 2
set(t, 'Units', 'normalized')  % step 3

字符串

示例

下面的第二张图是通过使用“旋转3D”按钮旋转第一张图获得的。文本相对于窗口处于相同的位置:
x1c 0d1x的数据
或者看这个动画。当图形旋转时,文本保持不变。


相关问题