Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab通过原点进行绘图,而不考虑只有负值或正值数据_Matlab_Variables_Plot_Automation - Fatal编程技术网

Matlab通过原点进行绘图,而不考虑只有负值或正值数据

Matlab通过原点进行绘图,而不考虑只有负值或正值数据,matlab,variables,plot,automation,Matlab,Variables,Plot,Automation,这一条应该很容易回答,但我很惊讶它没有被描述: 我有可变数据,通常当我简单地绘图时,我会在y轴上得到一个特写(x轴是时间,总是从零开始)。所以我得到了16-17的y值,但是零是看不到的。我知道你可以给matlab一个YLim值,但有时因为我的数据是可变的,所以我得到的y值范围是-50-100。如果我之前指定了YLim是[020],我根本看不到它,这不是我想要的。我总是想用我的数据绘制原点,我该怎么做(没有像[-1000-1000]这样的严格间隔,因为有时我有-0,01-0001的y值,但看不到它

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

我有可变数据,通常当我简单地绘图时,我会在y轴上得到一个特写(x轴是时间,总是从零开始)。所以我得到了16-17的y值,但是零是看不到的。我知道你可以给matlab一个YLim值,但有时因为我的数据是可变的,所以我得到的y值范围是-50-100。如果我之前指定了YLim是[020],我根本看不到它,这不是我想要的。我总是想用我的数据绘制原点,我该怎么做(没有像[-1000-1000]这样的严格间隔,因为有时我有-0,01-0001的y值,但看不到它)?如果你有想法,请帮忙

谢谢

更新1:完美解决

跟进问题:


有一件事我没有提到:我需要为我所有的18个子地块这样做。如何避免硬编码

手动修改轴大小很容易:

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

手动修改轴大小很容易:

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

手动修改轴大小很容易:

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

手动修改轴大小很容易:

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

,一种方法是自动使用:

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

这样,如果
0
不在
y

或者更好的方法是,如果希望保持matlab提供的舍入值(例如在[0,6]上绘制而不是在[0,5.872]上绘制),请首先使用
绘图(x,y)
绘制数据,然后根据需要将ylim值更改为0:


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

实现这一点的一种方法是自动使用:

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

这样,如果
0
不在
y

或者更好的方法是,如果希望保持matlab提供的舍入值(例如在[0,6]上绘制而不是在[0,5.872]上绘制),请首先使用
绘图(x,y)
绘制数据,然后根据需要将ylim值更改为0:


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

实现这一点的一种方法是自动使用:

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

这样,如果
0
不在
y

或者更好的方法是,如果希望保持matlab提供的舍入值(例如在[0,6]上绘制而不是在[0,5.872]上绘制),请首先使用
绘图(x,y)
绘制数据,然后根据需要将ylim值更改为0:


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

实现这一点的一种方法是自动使用:

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

这样,如果
0
不在
y

或者更好的方法是,如果希望保持matlab提供的舍入值(例如在[0,6]上绘制而不是在[0,5.872]上绘制),请首先使用
绘图(x,y)
绘制数据,然后根据需要将ylim值更改为0:


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

有趣的是,当随机数据为负,而下一次为正时会发生什么。三个Ylim是[0正]或[0负],但我不知道每次将零放在哪里。此外,数据是自动来的,我不能总是改变零的位置,我不明白。在第一种方法中,只需在代码后粘贴最后两行。那不管用吗?另外,第二种方法不符合你的价值观吗?我感谢你的方法,但我认为我会坚持yoh.lej的方法,因为它正是我所需要的,我想你可能在什么地方误解了我。我想在我的情节中有0,仅此而已,没有南。我想你误解了我的代码。你试过了吗
NaN
s未绘制(根据定义):-)有趣的是,当随机数据为负,而下一次为正时会发生什么。三个Ylim是[0正]或[0负],但我不知道每次将零放在哪里。此外,数据是自动来的,我不能总是改变零的位置,我不明白。在第一种方法中,只需在代码后粘贴最后两行。那不管用吗?另外,第二种方法不符合你的价值观吗?我感谢你的方法,但我认为我会坚持yoh.lej的方法,因为它正是我所需要的,我想你可能在什么地方误解了我。我想在我的情节中有0,仅此而已,没有南。我想你误解了我的代码。你试过了吗
NaN
s(根据定义):-)有趣的是