【问题标题】:Axes change when using hold for plot使用 hold 进行绘图时轴发生变化
【发布时间】:2017-02-22 18:05:14
【问题描述】:

我有两个 v_qv_qb 分别绘制在不同的图中,但是当我将它们一起绘制在同一个图中时,它们的值会发生变化。为什么?

这是 Matlab 代码(数据来自 Synopsis 软件):

v = [ 0.000E+00 2.449E-02 4.898E-02 7.347E-02 9.796E-02 1.224E-01 1.469E-01 1.714E-01 1.959E-01 2.204E-01 2.449E-01 2.694E-01 2.939E-01 3.184E-01 3.429E-01 3.673E-01 3.918E-01 4.163E-01 4.408E-01 4.653E-01 4.898E-01 5.143E-01 5.388E-01 5.633E-01 5.878E-01 6.122E-01 6.367E-01 6.612E-01 6.857E-01 7.102E-01 7.347E-01 7.592E-01 7.837E-01 8.082E-01 8.327E-01 8.571E-01 8.816E-01 9.061E-01 9.306E-01 9.551E-01 9.796E-01 1.004E+00 1.029E+00 1.053E+00 1.078E+00 1.102E+00 1.127E+00 1.151E+00 1.176E+00 1.200E+00];
v_qb = [ 1.200E+00 1.200E+00 1.200E+00 1.200E+00 1.199E+00 1.199E+00 1.198E+00 1.197E+00 1.196E+00 1.194E+00 1.190E+00 1.185E+00 1.178E+00 1.167E+00 1.153E+00 1.134E+00 1.108E+00 1.076E+00 1.034E+00 9.790E-01 9.080E-01 8.408E-01 8.005E-01 7.755E-01 7.578E-01 7.440E-01 7.327E-01 7.231E-01 7.147E-01 7.073E-01 7.006E-01 6.946E-01 6.890E-01 6.839E-01 6.792E-01 6.749E-01 6.709E-01 6.671E-01 6.636E-01 6.603E-01 6.572E-01 6.543E-01 6.515E-01 6.489E-01 6.463E-01 6.438E-01 6.415E-01 6.392E-01 6.370E-01 6.348E-01];
v_q = [ 0.000E+00 2.449E-02 4.898E-02 7.347E-02 9.796E-02 1.224E-01 1.469E-01 1.714E-01 1.959E-01 2.204E-01 2.449E-01 2.694E-01 2.939E-01 3.184E-01 3.429E-01 3.673E-01 3.918E-01 4.163E-01 4.408E-01 4.653E-01 4.898E-01 5.143E-01 5.388E-01 5.633E-01 5.878E-01 6.122E-01 6.367E-01 6.612E-01 6.857E-01 7.102E-01 7.347E-01 7.592E-01 7.837E-01 8.082E-01 8.327E-01 8.571E-01 8.816E-01 9.061E-01 9.306E-01 9.551E-01 9.796E-01 1.004E+00 1.029E+00 1.053E+00 1.078E+00 1.102E+00 1.127E+00 1.151E+00 1.176E+00 1.200E+00];

%plotting together
figure(1) 
plot(v_qb,v_q)
hold on
plot(v,v_qb)

%plotting separately
figure(2) 
plot(v_qb,v_q)
figure(3) 
plot(v,v_qb)

【问题讨论】:

  • 你如何将它们绘制在单独的图中?请编辑您的问题,以便其他人可以尝试复制您的问题。
  • 我根据您的指示修改了代码。谢谢
  • 对我来说很好。figure(2) 的 x 轴与 figure(1) 不同,figure(3) 的 y 轴与 figure(1) 不同。这只是为了让两个情节可以融合在一起。根据文档,hold 不会影响轴自动量程。如果要自定义轴值,请使用 axis

标签: matlab plot matlab-figure


【解决方案1】:

这是预期的行为。 figure(2) 的 x 轴和 figure(3) 的 y 轴与 figure(1) 中的不同,因此两个图的全部范围可以放在一起。根据文档和帮助,hold 不会影响轴自动量程:

MATLAB® 调整坐标区范围、刻度线和刻度线标签以显示完整范围的数据。

如果要自定义轴值,请使用axis 函数。特别是,您可以使用axis manual 来防止轴范围在您第一次调用plot 后发生变化:

figure(1) 
plot(v_qb,v_q)
hold on
axis manual
plot(v,v_qb)

这当然会将第二次调用的左侧(0 到 0.6)剪裁为plot。不确定您到底想要什么,所以请尝试使用这些选项。

【讨论】:

  • 这回答了你的问题吗?
【解决方案2】:

这是解决方案:

% Matlab M-file converted by [Custom WaveView] saved 08:19:49 Wed Feb 22 2017
v= [ 0.000E+00 2.449E-02 4.898E-02 7.347E-02 9.796E-02 1.224E-01 1.469E-01 1.714E-01 1.959E-01 2.204E-01 2.449E-01 2.694E-01 2.939E-01 3.184E-01 3.429E-01 3.673E-01 3.918E-01 4.163E-01 4.408E-01 4.653E-01 4.898E-01 5.143E-01 5.388E-01 5.633E-01 5.878E-01 6.122E-01 6.367E-01 6.612E-01 6.857E-01 7.102E-01 7.347E-01 7.592E-01 7.837E-01 8.082E-01 8.327E-01 8.571E-01 8.816E-01 9.061E-01 9.306E-01 9.551E-01 9.796E-01 1.004E+00 1.029E+00 1.053E+00 1.078E+00 1.102E+00 1.127E+00 1.151E+00 1.176E+00 1.200E+00];
v_qb = [ 1.197E+00 1.196E+00 1.194E+00 1.190E+00 1.185E+00 1.175E+00 1.161E+00 1.139E+00 1.105E+00 1.054E+00 9.774E-01 8.640E-01 7.241E-01 6.262E-01 5.471E-01 4.680E-01 3.832E-01 2.921E-01 1.988E-01 1.248E-01 8.988E-02 7.198E-02 6.078E-02 5.303E-02 4.734E-02 4.299E-02 3.957E-02 3.680E-02 3.453E-02 3.263E-02 3.101E-02 2.963E-02 2.843E-02 2.739E-02 2.647E-02 2.566E-02 2.495E-02 2.433E-02 2.377E-02 2.328E-02 2.285E-02 2.247E-02 2.213E-02 2.183E-02 2.155E-02 2.131E-02 2.108E-02 2.088E-02 2.069E-02 2.052E-02];
v_q = [ 0.000E+00 2.449E-02 4.898E-02 7.347E-02 9.796E-02 1.224E-01 1.469E-01 1.714E-01 1.959E-01 2.204E-01 2.449E-01 2.694E-01 2.939E-01 3.184E-01 3.429E-01 3.673E-01 3.918E-01 4.163E-01 4.408E-01 4.653E-01 4.898E-01 5.143E-01 5.388E-01 5.633E-01 5.878E-01 6.122E-01 6.367E-01 6.612E-01 6.857E-01 7.102E-01 7.347E-01 7.592E-01 7.837E-01 8.082E-01 8.327E-01 8.571E-01 8.816E-01 9.061E-01 9.306E-01 9.551E-01 9.796E-01 1.004E+00 1.029E+00 1.053E+00 1.078E+00 1.102E+00 1.127E+00 1.151E+00 1.176E+00 1.200E+00];
%plotting together
figure(2) 
plot(v_qb,v_q)
hold on
plot(v,v_qb)
hold on
grid on      
x = 0:1.2/10:1.2;

figure (3)
for b=-2:0.5:2
    plot(x, x+b);
    hold on
end
hold on
plot(v_qb,v_q)
hold on
plot(v,v_qb)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-21
    相关资源
    最近更新 更多