无论是否为正数据,Matlab都会通过原点进行绘图

时间:2015-01-14 12:32:57

标签: matlab variables plot automation

这个应该很容易回答,但我很惊讶它没有描述:

我有可变数据,通常当我简单地绘图时,我得到y轴上的特写(x轴是时间并始终以零开始)。所以我从16-17得到了y值,但零无处可见。我知道你可以给matlab一个YLim值,但有时因为我的数据是可变的,我得到的范围是-50-100 y。如果我之前指定YLim是[0 20]我根本不会看到它,这不是我想要的。我总是希望用我的数据绘制原点,我该怎么做(没有像[-1000 1000]这样的刚性区间,因为有时候我有-0,01-0,001的y值并且不会看到它)?如果您有任何想法,请提供帮助!

谢谢!

更新1:完美解决了!

后续问题:

有一件事我没有提到:我需要为我的所有18个子情节做这个。我怎样才能避免硬编码呢?

2 个答案:

答案 0 :(得分:2)

一种方法是自动使用:

ylim([min([y 0]) max([y,0])])

这样,如果0尚未在0

的范围内,它将在y开始或停止

或者更好,如果你想保持matlab提供的舍入值(例如[0,6]而不是[0,5.872]),首先使用plot(x,y)绘制数据,然后更改ylim如果需要,值为0:

ylim([min([ylim 0]) max([ylim 0])])

答案 1 :(得分:1)

手动修改轴尺寸很容易:

x = 1:10; %/ example x
y = 5 + rand(1,10); %// example y. Values between 5 and 6
plot(x,y) %// do the plot normally
ax = axis; %// get axis size
ax(3) = min(ax(3),0); %// if the y-axis lower limit is positive, make it 0
axis(ax) %// apply new axis size values

这似乎也有效:只需使用

plot([x NaN],[y 0])

也就是说,请将x值设置为NaN并将y值设置为0的点添加。该点未被绘制(因为NaN值),但它会强制y轴伸展到0