gpt4 book ai didi

python - Matplotlib 符号对数线性区域

转载 作者:行者123 更新时间:2023-12-01 04:19:03 26 4
gpt4 key购买 nike

我在绘制对数(或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)

enter image description here

首先,令我惊讶的是,在正常的 log 轴上,绘制了标有红十字的线段:该线段正上方的点(位于 y=0.05 >) 等于 1,下面 y=0 处的点为零,无法绘制在 log 轴上,那么为什么 matplotlib 会绘制这段线段呢?通过这种方式,情节给人的印象是,例如y=0.01x 等于 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)

enter image description here

关于python - Matplotlib 符号对数线性区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33935758/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com