2011-06-29 8 views
0

私はグラフに25ティックの軸を持っていて、グラフを読みやすくするために5番目のティック(0,5,10,15,20,25)を他のティックよりも大きくしたいとしましょう。 (これらのダニにはすでに番号ラベルがあり、他のダニにはラベルはありませんが、読書はやや不快です...)それは可能ですか?そして、もし私が25の代わりに27ティックを持っていたらどうしますか?グラフに異なるサイズの目盛りを付けることは可能ですか?

E:もう少し情報:

私は実際にはより多くの経験を積んだプログラマ(と、私は非常に経験はないよ)によって作られた、あまりにも過言ではない-コメントスクリプトを編集しています。与えられたデータに従ってカラーマップ(座標点(x、y)のひずみを意味する)を描きます...私はコード内で言われていることすべてを理解できないことを認めなければなりません。しかし、尋ねられた歪み場が描かれている部分があります。

 # Strain field on background 
     fig = mpl.figure(1,figsize=(6,5),facecolor='w',edgecolor='k') 
     mpl.clf() 
     ax1 = fig.add_axes([0.5*(1-0.50*ratio)+0.05, 0.45, 0.50*ratio, 0.50]) 
     mpl.contourf(strainY.T * 100,50) # Into percents 
     mpl.xlim(0,x-1) 
     mpl.ylim(0,y-1) 
     mpl.gca().invert_yaxis() 
     yt = np.linspace(0,y-1,len(vHeight)+1) 
     locs, labels = mpl.yticks(yt, vHeight, fontsize=9) 
     xt = np.linspace(0,x-1,len(vWidth)+1) 
     locs, labels = mpl.xticks(xt, vWidth, fontsize=9) 

ytおよびxtは、ダニを配置するために使用される特殊なベクトルを意味します。とにかく、一定のスペースを持つティック(tick)の2D歪みマップがあります...

より多くの情報が必要な場合は、もっと情報を求めてください。情報が必要なのか分かりません。

...私は以下のコメントとドキュメントを理解していますが、contourf()はplot()に対応しています。だからset_major_locatorはうまくいくはずですか?私は一度それを試したことを覚えていますが、うまくいきませんでした...私は再びそのスクリプトのコピーでそれを試すことができます。

答えて

2

メジャーとマイナーダニをお探しですか?私は、あなたが以下の例を探していると仮定します。

http://matplotlib.sourceforge.net/examples/pylab_examples/major_minor_demo1.html#pylab-examples-major-minor-demo1

編集 それが実行できるように、私はあなたの例を適応してきました。次回は、誰かがコピー/ペースト/実行できる最小限の例を投稿してください。

上記のウェブサイトから、私は軸の書式をコピーしました。あなたの質問が正しく理解されたら、任意の場所に目盛りを設定したいと思う。このために、FixedLocatorをリストとともに使用することができます。ティックの間に一定の間隔がある場合は、MultipleLocatorを使用します。 matplotlib.tickerには他にもたくさんのロケータがあります...

あなたは以下のコードを実行して、うまくいけばあなたが望むものを得ることができます!これは何が必要でない場合:-)は

import matplotlib.pyplot as mpl 
import numpy as np 
from matplotlib.ticker import MultipleLocator, FormatStrFormatter, FixedLocator 

majorLocator = FixedLocator([0,15,19,40,60,99]) 
majorFormatter = FormatStrFormatter('%d') 
minorLocator = MultipleLocator(5) 

ratio = 1 
strainY = np.zeros((100,100)) 
x = 100 
y = 100 
vHeight = np.arange(0,100,5) 
vWidth = np.arange(0,100,5) 

# Strain field on background 
fig = mpl.figure(1,figsize=(6,5),facecolor='w',edgecolor='k') 
mpl.clf() 
ax1 = fig.add_axes([0.5*(1-0.50*ratio)+0.05, 0.45, 0.50*ratio, 0.50]) 
mpl.contourf(strainY.T * 100,50) # Into percents 
mpl.xlim(0,x-1) 
mpl.ylim(0,y-1) 
mpl.gca().invert_yaxis() 
yt = np.linspace(0,y-1,len(vHeight)+1) 
locs, labels = mpl.yticks(yt, vHeight, fontsize=9) 
xt = np.linspace(0,x-1,len(vWidth)+1) 
locs, labels = mpl.xticks(xt, vWidth, fontsize=9) 

ax1.xaxis.set_major_locator(majorLocator) 
ax1.xaxis.set_major_formatter(majorFormatter) 
ax1.xaxis.set_minor_locator(minorLocator) 

mpl.show() 

、あなたが実行され、何かにあなたの例のコードを変更し、おそらくそれはあなたが必要とされているもののスケッチを投稿してくださいだろうか?

+0

ああ、これは有望そうです!ありがとう、私はそれを確認します。 – mmyntti

+0

...まあ、私の場合は使用できないようです。私のスクリプトは、画像の軸を別々に作成しますが、スケーリングなどの理由でプロットすることはできません。 axis tickは現在、このようにして作成されています: 'locs、labels = mpl.yticks(yt、vHeight)'ここで、ytはティックの位置を示し、vHeightはラベルに来るものを示します。それは私が知っているそれを扱う唯一の良い方法です。私はset_major_locatorと私の場合のものを置く方法が分かりません...誰かのアドバイスができますか?私はmatplotlib.tickerのドキュメントを読むことを試みましたが、私は助けを見つけることができません...私はこのようなものにはあまり経験がありません。 – mmyntti

+0

@mmyntti:通常のメジャー/マイナーティックでは不十分な理由について、さらに詳しい情報を提供しなければならないと思います。最善の方法は、問題を示す最小限のサンプルスクリプトを用意することです。 –

関連する問題