Python Matplotlib symlog线性区域
我在绘制对数(或Python Matplotlib symlog线性区域,python,matplotlib,Python,Matplotlib,我在绘制对数(或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.pl
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
处)等于一,下方y=0
处的点为零,不能绘制在log
轴上,那么matplotlib为什么绘制这条线段呢?这样,绘图给人的印象是,例如,y=0.01
,x
等于一,这是不正确的
(编辑:符号学
是否放弃标记的线段…)
其次,我试图通过使用
symlog
轴(右面板)来解决这个问题,使用linthresy
设置一个线性区域,但这似乎不起作用(在本例中)。这难道不应该创建一个类似于在y={0,10^-2,10^-1,10^-0}
上有标签的等距y轴吗 我遇到了同样的问题,直到我意识到关键字是linthresh
而不是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)
你不能以对数比例绘制0,这将导致
10^-无穷大
。我知道-这就是为什么我希望matplotlib放弃我标记的线段,并试图使用symlog
Axis绘制它。我想你发现了一个bug…哇,奇怪的是Python没有抱怨拼写错误的参数,但我很高兴你发现了问题。