这个应该很容易回答,但我很惊讶它没有描述:
我有可变数据,通常当我简单地绘图时,我得到y轴上的特写(x轴是时间并始终以零开始)。所以我从16-17得到了y值,但零无处可见。我知道你可以给matlab一个YLim值,但有时因为我的数据是可变的,我得到的范围是-50-100 y。如果我之前指定YLim是[0 20]我根本不会看到它,这不是我想要的。我总是希望用我的数据绘制原点,我该怎么做(没有像[-1000 1000]这样的刚性区间,因为有时候我有-0,01-0,001的y值并且不会看到它)?如果您有任何想法,请提供帮助!
谢谢!
更新1:完美解决了!
后续问题:
有一件事我没有提到:我需要为我的所有18个子情节做这个。我怎样才能避免硬编码呢?
答案 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
。