【问题标题】:matlab plots vertical lines when it's not in the data当它不在数据中时,matlab绘制垂直线
【发布时间】:2019-10-09 02:00:02
【问题描述】:

我正在尝试在 matlab 中绘制不(据我所知)包含垂直线的数据。但是,当我绘制它时,我会得到很多垂直线。我猜有一些我不知道的小语法问题,但我找不到任何类似的问题。

>> whos t 
Name      Size                Bytes  Class     Attributes

t         1x33715            269720  double

>> whos nascent_ts
Name            Size                   Bytes  Class     Attributes

nascent_ts      4x6x33715            6473280  double

plot(t,squeeze(squeeze(nascent_ts(1,1,:))))

剧情如下:

我尝试过转换两边,但没有效果。我只是看不出这怎么可能发生。以下是有关情节实际内容的更多信息。

>> tmp=squeeze(squeeze(nascent_ts(1,1,:)));
>> whos tmp
Name          Size             Bytes  Class     Attributes

tmp       33715x1             269720  double

【问题讨论】:

  • 了解数据的大小并没有帮助。我们需要查看数据本身。需要注意的是,plot matlab 只会用一条线连接所有点,因此您可能会看到“垂直线”,其中低值连接到高值。您可以指定您不想要连接线,而是想要带有 plot plot(data, '.') 的点标记
  • 执行numel(unique(t)) 以查看您是否有重复的时间步长,并min(nascent_ts)max(nascent_ts) 以查看要绘制的数据中是否存在超出比例的高/低值。
  • Suever 就是这样,谢谢! (我现在觉得真的很蠢!)。如果您想将其写为答案,那么我将选择它作为答案。
  • 谢谢你,马特,你的评论也很有用。

标签: matlab matlab-figure


【解决方案1】:

您看到的“垂直线”只是 MATLAB 的 plot 功能将您的所有数据点与线连接起来的结果。垂直线是低值数据点后跟高值数据点的位置。

要解决此问题,您可以为 plot 指定非线(仅标记)样式

plot(t,squeeze(squeeze(nascent_ts(1,1,:))), '.')

或者您可以设置现有线对象的LineStyle 属性

h = plot(t,squeeze(squeeze(nascent_ts(1,1,:))));
set(h, 'LineStyle', 'none', 'Marker', '.')

【讨论】:

    【解决方案2】:

    尝试更改 y 轴范围:ylim([-0.5 1.5]);

    【讨论】:

    • 这如何回答这个问题?
    猜你喜欢
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 2015-04-04
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多