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没有抱怨拼写错误的参数,但我很高兴你发现了问题。