2016-10-30 11 views
0

jupyterノートブック(macbook pro)にmatplotlibを使っていくつかの非常に小さな値をプロットしようとしています。しかし、私がy軸の限界を設定しても、私が得るのはフラットラインだけです。私が後にしていることは、y軸表記法に関して以下の例(png)のようなものです。私はまた、同じ例をジュピターの外で試してみましたが、私は同じ結果を得ています。ここmy previous question上のコードsuggested by Andrew Walkerだ:jupyterでmatplotlibを使って非常に小さな値をプロットする

%matplotlib inline 
import matplotlib.pyplot as plt 
import numpy as np 

fig = plt.figure(figsize=(13,6)) 
ax = fig.add_subplot(111) 
plt.hold(True) 


xs = np.linspace(0, 1, 101) 
ys = 1e-300 * np.exp(-(xs-0.5)**2/0.01) 

ax.plot(xs, ys, marker='.') 

ここで私が得るものです:

enter image description here

+1

'ax.set_ylim(0,1e300)'は実際に '-0.001'に設定します(設定時に制限を返します)。あなたが行くことができ、実際に動くことができる最低のものは 'ax.set_ylim(0.0,1e-286)' – mfitzp

+0

'1e-300'は二重で表現できる最小値に近いです。その範囲に収まらないようにデータを拡大する方がよいでしょう。 – poolie

答えて

2

一番簡単な方法:

enter image description here

そして、ここでは、私が後だものですあなたの値に10^300を掛けたものをプロットして、y軸ラベルを変更することです:

%matplotlib inline 
import matplotlib.pyplot as plt 
import numpy as np 

fig = plt.figure(figsize=(13,6)) 
ax = fig.add_subplot(111) 
plt.hold(True) 

xs = np.linspace(0, 1, 101) 
ys = np.exp(-(xs-0.5)**2/0.01) 

ax.plot(xs, ys, marker='.') 

ax.set_ylabel(r'Value [x 10^{-300}]') 
0

あなたは、あなたが必要なものを行うためにオブジェクトを自分の軸にset_ylimメソッドを使用し、単純にこれにあなたのコードを変更すると、それは何が必要だろうことができます。

%matplotlib inline 
import matplotlib.pyplot as plt 
import numpy as np 

fig = plt.figure(figsize=(13,6)) 
ax = fig.add_subplot(111) 
plt.hold(True) 


xs = np.linspace(0, 1, 101) 
ys = 1e-300 * np.exp(-(xs-0.5)**2/0.01) 

ax.set_ylim([0,10^-299]) 

ax.plot(xs, ys, marker='.') 

あなたがThis linkをチェックするようなことがありこのテーマの詳細については、

+0

これは動作しません(試してください) - 1e-299が小さすぎて、matplotlibが限界値として受け付けません。 – mfitzp

+0

はい、正確です。それは動作しません – spyrostheodoridis

関連する問題