在不影响y轴值的情况下,我需要用什么命令在一个打开的Matlab图形中移动x轴值?(如下图所示)
到目前为止,我最好的猜测是:

LineH = get(gca, 'Children');
x = get(LineH, 'XData');
y = get(LineH, 'YData');

offset=20;

nx = numel(x);
for i=1:nx
    x_shifted{i} = x{i} + offset;
end

set(LineH,'XData',x_shifted')

这就给了我一个错误:
Error using matlab.graphics.chart.primitive.Line/set
While setting the 'XData' property of Line:
Value must be a vector of numeric type

谢谢!
matlab - 如何在Matlab图形中替换x轴?-LMLPHP
matlab - 如何在Matlab图形中替换x轴?-LMLPHP

最佳答案

必须将'XData' property名称封装在单元格中,才能一次更新多个打印对象从set文档中:
set(H,NameArray,ValueArray)使用单元格数组NameArrayValueArray指定多个属性值要在每个n图形对象上设置m属性值,请将ValueArray指定为m-by-n单元格数组,其中m = length(H)n等于NameArray中包含的属性名称数。
所以要纠正错误,只需将最后一行改为:

set(LineH, {'XData'}, x_shifted');

如果您感兴趣,这里有一个使用cellfun而不是循环的解决方案:
hLines = get(gca, 'Children');
xData = get(hLines, 'XData');
offset = 20;

set(hLines, {'XData'}, cellfun(@(c) {c+offset}, xData));

07-27 14:05