如何在 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')