我在绘制在对数(或symlog
)轴上变为零的线时遇到一些困难。考虑这个简单的例子:
import numpy as np
import matplotlib.pylab as pl
pl.close('all')
z = np.linspace(0,1,20)
x = np.ones_like(z)
x[0] = 0
pl.figure()
pl.subplot(131)
pl.plot(x, z, '-x')
pl.xlim(-0.1,1.1)
pl.subplot(132)
pl.plot(x, z, '-x')
pl.yscale('log')
pl.xlim(-0.1,1.1)
pl.subplot(133)
pl.plot(x, z, '-x')
pl.yscale('symlog', linthresy=1e-2)
pl.xlim(-0.1,1.1)
首先,我很惊讶在法线log
轴上绘制了标有红叉的线段:该线段正上方的点(处y=0.05
)等于1,正下方的点y=0
为0并且无法在log
轴上进行绘制,那么为什么matplotlib会绘制此段呢?这样的情节给人的印象是在例如y=0.01
,x
等于1,这是不正确。
(编辑:semilogy
放弃标记的线段...)
其次,我试图通过使用symlog
轴(右面板)来解决此问题,使用来设置线性区域linthresy
,但这似乎不起作用(在这种情况下)。这是否不应该创建带有均匀间隔的y轴的标签y = { 0, 10^-2, 10^-1, 10^0 }
?
在意识到关键字linthreshy
不是之前,我遇到了同样的问题linthresy
:
import numpy as np
import matplotlib.pylab as pl
pl.close('all')
z = np.linspace(0,1,20)
x = np.ones_like(z)
x[0] = 0
pl.figure()
pl.subplot(121)
pl.plot(x, z, '-x')
pl.yscale('symlog', linthresy=1e-2)
pl.xlim(-0.1,1.1)
pl.subplot(122)
pl.plot(x, z, '-x')
pl.yscale('symlog', linthreshy=1e-2)
pl.xlim(-0.1,1.1)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句