2011-07-13 9 views
4

私は-1000から1000までの範囲のデータをプロットしていますが、x = -1と0の間の値だけに興味があります。Matplotlibの "symlog"オプション:カーブが "戻ってくる"のを防ぐ方法?

xログスケールでプロットしたい。しかし、x値が負であるので、xscale( "log")を使うことはできません。私はxscale( "symlog")を使うことができますが、これは私が望む動作です。

残念ながら、「symlog」が壊れているようです。 linthreshx引数を2より小さい値(デフォルト?)で使用することはできません。しかし、私は-1から0までのx値に興味があるので、私はその引数を使って1e-5やそれより小さいものに設定する必要があります。

linthreshxを1より小さい値に設定すると、プロットが壊れます。ここでWhat is the difference between 'log' and 'symlog'?から取られた簡単な例です:

あなたが「戻ってくる」曲線で私が言いたいことが表示されますことを実行
import numpy 
from matplotlib import pyplot 

# Enable interactive mode 
pyplot.ion() 

# Draw the grid lines 
pyplot.grid(True) 

# Numbers from -50 to 50, with 0.1 as step 
xdomain = numpy.arange(-50,50, 0.1) 

# Plots a simple linear function 'f(x) = x' 
pyplot.plot(xdomain, xdomain) 
# Plots 'sin(x)' 
pyplot.plot(xdomain, numpy.sin(xdomain)) 

pyplot.axis([-60,60,-1.5,1.5]) 

pyplot.xscale('symlog', linthreshx=0.1) 

...ここでは、結果として得られるイメージがある:result

問題はそうですx軸上では0が実際には10^0 = 1で0ではないことになります。何かを小さくすると1になり、軸の値が間違っています(マウスでホバーしてx値)。

私は正しいツールを使用していないかもしれませんが、私が欲しいものを達成する方法は?私はx軸を次のようにします:-10^2 -10^1 -10^0 -10^-1 -10^-2 -10^-3 ... [定義した最小指数まで] ... 10^-3 10^-2 10^-1 10^0^10^2

1 10はあなた

答えて

7

これは、実際にmatplotlibのバグでしたありがとうございます。

は、それが修正されましたhttps://github.com/matplotlib/matplotlib/issues/396

を参照してください。以前のスニペットの正しい結果を示す画像を添付しています。 Correct result

関連する問題