実行可能なコードで遊ぶことは、Pythonを学ぶための最速の方法の1つです。
それでは、matplotlibサンプルギャラリーのコードから始めましょう。
コード内のコメントを考えると、コードは4つの主要なスタンザに分割されているように見えます。最初のスタンザはいくつかのデータを生成し、2番目のスタンザはメインプロットを生成し、3番目と4番目のスタンザははめ込み軸を作成します。
データを生成してメインプロットをプロットする方法を知っているので、3番目のスタンザに焦点を当てましょう。
a = axes([.65, .6, .2, .2], axisbg='y')
n, bins, patches = hist(s, 400, normed=1)
title('Probability')
setp(a, xticks=[], yticks=[])
サンプルコードを、たとえばと呼ばれる新しいファイルにコピーしますtest.py
。
に変更する.65
とどうなり.3
ますか?
a = axes([.35, .6, .2, .2], axisbg='y')
スクリプトを実行します。
python test.py
「確率」の挿入図が左に移動していることがわかります。したがって、このaxes
関数はインセットの配置を制御します。数字をもう少し試してみると、(。35、.6)がはめ込みの左下隅の位置であり、(。2、.2)がはめ込みの幅と高さであることがわかります。数字は0から1までで、(0,0)は図の左下隅にあります。
さて、今私たちは料理をしています。次の行に進みます。
n, bins, patches = hist(s, 400, normed=1)
これはヒストグラムを描画するためのmatplotlibコマンドとして認識されるかもしれませんが、そうでない場合は、数値400をたとえば10に変更すると、はるかに分厚いヒストグラムの画像が生成されるため、数値を試してみるとすぐにわかります。この線は、はめ込み内の画像と関係があります。
semilogx(data[3:8,1],data[3:8,2])
ここに電話したくなるでしょう。
この行title('Probability')
は明らかに、はめ込みの上にテキストを生成します。
最後にになりsetp(a, xticks=[], yticks=[])
ます。#
遊ぶ数字はないので、行の先頭にaを付けて、行全体をコメントアウトするとどうなりますか。
# setp(a, xticks=[], yticks=[])
スクリプトを再実行します。おー!現在、はめ込み軸にはたくさんの目盛りと目盛りラベルがあります。罰金。setp(a, xticks=[], yticks=[])
これで、軸から目盛りとラベルが削除されることがわかりましたa
。
これで、理論的には、このコードを問題に適用するのに十分な情報が得られます。しかし、もう1つの潜在的な障害があります。matplotlibの例では
、を使用しているのfrom pylab import *
に対し、を使用していますimport matplotlib.pyplot as plt
。
matplotlib FAQはimport matplotlib.pyplot as plt
、スクリプトを作成するときにmatplotlibを使用するための推奨される方法であり
from pylab import *
、インタラクティブセッションで使用するためのものであると述べています。だからあなたはそれを正しい方法でやっています(私もimport numpy as np
代わりに使うことをお勧めしますfrom numpy import *
が)。
では、matplotlibの例をどのように変換して実行するのimport matplotlib.pyplot as plt
でしょうか?
変換を行うには、matplotlibの経験が必要です。通常、andplt.
のような裸の名前の前に追加するだけですが、関数がnumpyから来る場合もあれば、呼び出しがモジュールからではなく、axesオブジェクトから来る場合もあります。これらすべての機能がどこから来ているのかを知るには経験が必要です。「matplotlib」と一緒に関数の名前をグーグルで検索すると役立ちます。サンプルコードを読むことで経験を積むことができますが、簡単な近道はありません。axes
setp
plt
したがって、変換されたコードは次のようになります
ax2 = plt.axes([.65, .6, .2, .2], axisbg='y')
ax2.semilogx(t[3:8],s[3:8])
plt.setp(ax2, xticks=[], yticks=[])
そして、あなたはこのようにあなたのコードでそれを使うことができます:
from numpy import *
import os
import matplotlib.pyplot as plt
data = loadtxt(os.getcwd()+txtfl[0], skiprows=1)
fig1 = plt.figure()
ax1 = fig1.add_subplot(111)
ax1.semilogx(data[:,1],data[:,2])
ax2 = plt.axes([.65, .6, .2, .2], axisbg='y')
ax2.semilogx(data[3:8,1],data[3:8,2])
plt.setp(ax2, xticks=[], yticks=[])
plt.show()