gpt4 book ai didi

matlab - 如何替换 Matlab 图形中的 x 轴?

转载 作者:太空宇宙 更新时间:2023-11-03 20:17:27 25 4
gpt4 key购买 nike

我需要什么命令才能在不影响 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

谢谢!

non_shifted_axis shifted_axis

最佳答案

你必须封装 'XData' property单元格中的名称以一次更新多个绘图对象。来自set文档:

set(H,NameArray,ValueArray) specifies multiple property values using the cell arrays NameArray and ValueArray. To set n property values on each of m graphics objects, specify ValueArray as an m-by-n cell array, where m = length(H) and n is equal to the number of property names contained in 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));

关于matlab - 如何替换 Matlab 图形中的 x 轴?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46941434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com