[英]Matplotlib symlog linear region
我在繪制在對數(或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
下方的點為零,並且可以繪制在對log
軸上,那么為什么matplotlib會繪制此段? 這樣,該圖給人的印象是,在例如y=0.01
, x
等於1,這是不正確的。
( 編輯 : semilogy
確實放棄了標記的線段...)
其次,我試圖通過使用symlog
軸(右面板),使用linthresy
設置線性區域來解決此問題,但這種方法似乎不起作用(在這種情況下)。 這是否不應該創建諸如y = { 0, 10^-2, 10^-1, 10^0 }
標簽的均勻間隔的y軸的東西?
我遇到了同樣的問題,直到我意識到關鍵字是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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.