考虑以下绘制图形的代码:
figure('Renderer', 'opengl');
N = 50;
tL = linspace(0.5, 6, N).';
tB = sort(randi(100,N,20),1);
yyaxis right; plot(tL, tB);
xlim([2 6]);
例如,当我运行这段代码时,我得到了一个鬼的图,它的移动线应该是静态的(这使用的是我的真实数据,看起来比示例要好一些):
其他一些观察结果:
xlim
行,就什么也没有发生(即,该数字是预期的静态)。figure('Renderer', 'painters')
创建图形时,不会发生这种情况。有人可以解释为什么会这样吗?这是有记录的行为吗?知道如何控制它吗?
我正在Windows 10 v1803上使用R2018b。我的屏幕已连接到板载GPU,后者是Intel HD Graphics 530(驱动程序版本22.20.16.4749)。
答案 0 :(得分:1)
总而言之,您看到的“动画”是作者设计的,应该是。
以下代码禁用了当前轴的命中测试可见性,因此在鼠标移动或单击轴时不会触发重绘事件。但是使用resize事件时,必须重新绘制所有对象(这是故意设计的行为)。
figure('Renderer', 'opengl');
N = 50;
tL = linspace(0.5, 6, N).';
tB = sort(randi(100,N,20),1);
yyaxis right; h = plot(tL, tB,'ButtonDownFcn',@lineCallback);
set(gca,'HitTest','off')
xlim([2 6]);
function lineCallback(Figure1,Structure1)
disp('Button Down: redraw...');
end
此代码段已在Mac,window10和Ubuntu 18.04上使用MATLAB R2018B进行了测试。一切正常。