我有一组数据,应该以loglog比例绘制。 x值始终为正值,但y值为正值和负值。因此,loglog
命令将省略负y值。但我想绘制它们:我希望y轴具有对数刻度,但是具有负值,以及正值。
基本上,如果我们有一组数据(x,y)
,
我想绘制:(log(x),log(y))
,y>0
和(log(x),-log(-y))
,y<0
。我试图使用这些公式,然后使用简单的plot
函数,但是使用这种方法,轴不是对数刻度。我再次希望两个轴都是对数刻度。
由于
编辑:澄清一下,我希望结果与plot(x,y)
完全相同,但y轴和x轴都是对数刻度
答案 0 :(得分:4)
绘制对数图有几个函数:沿y,沿x或两者:
semilogy
,semilogx
,loglog
。您需要loglog
一个:
ypos = y(y>0); % Gets positive values
xpos = x(y>0); % Get corresponding x values
yneg = y(y<0); % Gets negative values
xneg = x(y<0); % Get corresponding x values
figure;
loglog(xpos,ypos)
hold on
loglog(xneg,-yneg, 'r')
这基本上在同一图中创建了两个图,一个具有正值,另一个具有负y
值。简而言之:
figure;
loglog(x(y>0),y(y>0))
hold on
loglog(x(y<0),-y(y<0),'r')
由于对数按定义严格为正,因此无法创建负标度。你能做的就是通过设置
来给你一个幻想set(gca, 'xdir','reverse')
这确实意味着您需要两个单独的图,以防止x轴从正数向后运行。
答案 1 :(得分:2)