2011-12-05 7 views
2

私の問題は、非常に近いy値をプロットすると、下の図のようにmatplotlibがyticklabelにバイアスを使います(左上隅に+1.2)。 output imagematplotlibのyticklabelの偏りを取り除いてください

バイアスはyticklabelsの長さを減らさないので、私は偏っていません。それは1.2000010を示しているので、どのように私は、1.2000012をバイアスを削除することができます...

ここで私は例を生成するために使用されるコードは次のとおりです。

from pylab import * 

plot((0,1),(1.200001,1.200002)) 
show() 

答えて

3

類似の方法で供給される機能pyplot.ticklabel_formatを使用しているpyplotインターフェイスを使用して、これを達成するための最も簡単な(そしておそらく望ましい)方法

from pylab import * 

plot((0,1),(1.200001,1.200002)) 
ticklabel_format(useOffset=False) 
show() 

へ:this例を使用して、私はこれが動作するようになりましたしかし、他の提案されたソリューションは、より直接的な制御を提供します。

0

あなたは、各ytickにプロットされるテキストを制御することができますyticks()methodとなります。ここであなたが欲しいものを行うには、コードのブロックです:

from pylab import * 

plot((0,1),(1.200001,1.200002)) 
ticks,ticklabels = yticks() 
newTickLabels = [] 
for tick in ticks: 
    newTickLabels.append("%10.7f"%tick) 
yticks(ticks,newTickLabels) 
show() 

私はダニと私は無視し、対応するラベルを、取得するためにパラメータなしでyticks()を使用しています。それから、私は各目盛のために1つ、新しい配列の列を作ります。各ラベルは、文字列形式のティック値です。あなたは、希望の外観を得るためにフォーマット文字列"%10.7f"を調整する必要があります。次に、ダニとチックラベルをyticks()メソッドに戻して再定義します。

ここでの結果です:yの限界を自動的に変更のよう enter image description here

も見えます。これはylim()で調整できます。

2

yticklabelsの書式を調整する必要があるようです。これを直接行うことができます。

from pylab import * 
from matplotlib.ticker import FormatStrFormatter 

plt.clf() 
ax = subplot(111) 
plot((0,1),(1.200001,1.200002)) 
majorFormatter = FormatStrFormatter('%.7f') 
ax.yaxis.set_major_formatter(majorFormatter) 
show() 
+0

あなたの答えは私の考えよりも頑強です。 – Yann

+0

@Yann、ありがとう。ただし、目盛りのラベルごとに書式を変更したい場合は、あなたのものが良いです。 – cosmosis

関連する問題