【问题标题】:Matlab - plot; modify X-axis values without modifying graphMatlab - 情节;修改 X 轴值而不修改图形
【发布时间】:2016-09-24 02:26:15
【问题描述】:

以下示例图是在循环中的值存储上创建的(矢量数据根据矩阵索引绘制)。我想修改 x 轴上的值,在这种情况下,我想在不改变绘图的情况下将它们除以 100。有什么简单的方法可以做到这一点吗?

此外,我有类似的图表,我不仅希望除/或乘以值,还希望在不改变实际绘图的情况下添加或减去值。我想创建第二个向量并将它们相互绘制,但是因为我有很多不同的图表,所以我想知道是否有 GUI 工具可以帮助我解决这个问题?或者可能是一些简单的代码行来更改绘制矢量的索引。

感谢您的每一个建议!

【问题讨论】:

标签: matlab plot


【解决方案1】:

我建议更改绘制数据的 x 值,而不是手动更改刻度标签。这样做的好处是您可以放大并正确调整刻度。它可以通过使用绘图句柄轻松实现,读取XData 属性并使用所需的修改将其写回。请注意,x 的值保持不变,只有绘图本身的数据会发生变化。

% example data
y = linspace(-0.6,4.05,100)*1e8;
x = linspace(700,1100,100);

% plot figure
figure;                     % create a new figure
ph = plot(x,y);             % plot and store handle

% change x-values of plot
xp = get(ph,'XData');       % extract from plot using handle
xp = xp/100;                % modify x-data
set(ph,'XData',xp);         % write back to plot using handle

结果图:


另一种选择是手动更改标签。这样做的缺点是保留原始修改的刻度,并且在放大时不会调整。因此,除非您为绘图编写回调函数,否则您不会得到任何额外的刻度,这比建议的方法更复杂。不过,这里有一种只更改刻度的方法:

xtick = get(gca,'XTick');
set(gca,'XTick',xtick,'XTickLabel',xtick/100);

【讨论】:

    猜你喜欢
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多