如何在 semilogx 图中绘制 x=0?
How to plot x=0 in semilogx plot?
我需要使用 semilogx(x,y)
绘制图表。我有 x=[0 1 2 ... 10 15 20 30 50 75 100]
。问题是 MATLAB 不绘制 x=0
,我理解这是因为 log(0)=undef
。那么MATLAB中有没有另一种方法来传播我的观点呢?因为使用线性刻度会将所有第一个点压缩到图形宽度的 1/10!
通常,在这种情况下所做的是将 1
添加到所有 x
,因此第一个值(最初是 0
)出现在原点,后面也是-transformation 对于所有值都是相同的。您可以添加除 1
之外的任何其他小值,并获得类似的结果。但是,您不想添加一个 太小 的值(如 eps
),因为那样您与下一个值的距离很远,这将导致所有其他要打包在图表右侧的值。
我们来看一个例子:
x = [0 logspace(0,2,5)];
% x = 0 1 3.1623 10 31.623 100
y = 2.*(x+1); % add 1 to all x
semilogx(x+1,y,'o','markerfacecolor','b')
而如果您将 0
替换为 eps
,您将得到:
x = [0 logspace(0,2,5)];
y = 2.*(x+eps); % add a tiny value too all x
semilogx(x+eps,y,'o','markerfacecolor','b')
我需要使用 semilogx(x,y)
绘制图表。我有 x=[0 1 2 ... 10 15 20 30 50 75 100]
。问题是 MATLAB 不绘制 x=0
,我理解这是因为 log(0)=undef
。那么MATLAB中有没有另一种方法来传播我的观点呢?因为使用线性刻度会将所有第一个点压缩到图形宽度的 1/10!
通常,在这种情况下所做的是将 1
添加到所有 x
,因此第一个值(最初是 0
)出现在原点,后面也是-transformation 对于所有值都是相同的。您可以添加除 1
之外的任何其他小值,并获得类似的结果。但是,您不想添加一个 太小 的值(如 eps
),因为那样您与下一个值的距离很远,这将导致所有其他要打包在图表右侧的值。
我们来看一个例子:
x = [0 logspace(0,2,5)];
% x = 0 1 3.1623 10 31.623 100
y = 2.*(x+1); % add 1 to all x
semilogx(x+1,y,'o','markerfacecolor','b')
而如果您将 0
替换为 eps
,您将得到:
x = [0 logspace(0,2,5)];
y = 2.*(x+eps); % add a tiny value too all x
semilogx(x+eps,y,'o','markerfacecolor','b')