今から始めるPython その2 Spyderを使う
前回(今から始めるPython その1)ではPython(x,y)のインストールまで説明しました。今日はPython(x,y)でイチオシされているPythonのIDEであるSpyderを使ってみます。IDEはIntegrated Development Environmentの略で、RでいうRStudioに相当して、エディターの他にプログラミングに必要な便利な機能がたくさんついた統合開発環境です。
Spyderを起動する
スタートメニューからPython(x,y)を開くと、下の方にSpyderのフォルダがあるはずです。Light版ではない通常版を起動しましょう。
Spyderの初回起動の画面はこんな感じです。
右下はPythonのコンソールですが、データ解析用途にデザインされているので素のままのPythonではなくNumPyとSciPy、Matliplibに加えてguidataとquiqwtというモジュール(ライブラリ)が自動でインポートされています。(ちょっとIPythonみたいな感じですね。IPythonについては後でやります。)
左にはSpyder内蔵のエディター、右上にはオブジェクトエディターがあります。上部のグレーのタイトル部分をドラッグすることで、これらのパネルは移動できますので、好みに変えて変更しましょう。
私はエディターが縦長で右側にくるのが好きなので、そうしました。あとはオブジェクトエディターとバリアブルエクスプローラー、ファイルエクスプローラーを一緒に左上に配置して、残りは全部左下にしました。この辺りは好みですのでご自由に。
エディターを使ってみる
それでは、なにか適当なデータをプロットするスクリプトをエディターに書いてみましょう。
まず、エディターの一行目にある
# -*- coding: utf-8 -*-
ですが、Pythonのインタプリタがスクリプトを実行するときにエンコーディングを判断するのに使われます。書かなくともいいですが、その場合Asciiコードと解釈されて、日本語を表示したりすると文字化けしてしまうので、残しておくと便利でしょう。
その次のトリプルクォーテーションマークで囲まれた文字列は、doc stringと呼ばれるもので、このスクリプトの説明となるものです。一番最初の文字列は無視される仕様なので、実行されません。自分用のメモをかいたりするのに使えますし、ソースコードからドキュメンテーションを自動で作成したりするときに使われたりするものだと覚えておくとOKです。
では早速、doc stringの下から、はじめの一行を入力してみましょう。まずはPythonでデータ解析をするならお約束な
from pylab import *
をエディターに書き込みます。これはpylabというモジュールにある関数・クラスをすべてトップのネームスペースにインポートするという意味になります。MATLABではインストールされたツールボックスはいつでも使用可能ですが、Pythonではインポートしてから使用可能になります。
pylabはmatplotlibというMATLABのようなプロットするためのモジュールに入っているサブモジュールで、MATLABから来た人がmatplotlibの機能を使いやすいようにデザインされた環境を作り出します。まあライブラリの本体であるmatplotlibの中のよく使われる関数を呼び出しやすくするショートカットの集まりみたいなものだと考えておけばよいです。
Spyderのエディターには便利なショートカットキーがいろいろあるのですが、中でもF9はおすすめです。
from pylab import *
それでは、この一行をエディター上で選択して、その状態でF9を押してみましょう。
どうでしょう?コンソールに同じ行が送られて実行されましたね?MATLABにも似たようなショートカットがありますが、このように、エディターにプログラムを書き貯めながら少しづづ実行し、確認しならがプログラムを書いていくことができると、デバックが非常に効率よく進められます。
さて、次のラインでは、早速インポートされたpylabの機能を呼び出してみます。
ion()
と続けましょう。
ionはinteractive mode onの略で、これをやらないとプロットしようと思い、plot(data)とした後で、show()というコマンドが実行されるまでプロットが画面にでて来ません。しかし、インタラクティブモードがオンになっていると、MATLABのようにplotを実行するたびにウィンドウがアップデートされるようになります。
ちなみに切るときはioff()で切ります。インタラクティブモードオフにする利点は、ひとつのプロットにたくさんのラインやマーカーを重ね書きするような場合、全部メモリ上に書き終わってから一度だけスクリーンへと描画するため実行速度が速くなりますが、まあionで普通は問題ありません。
インポートとネームスペース
さて、このionは先程インポートしたpylabの関数です。試しにコンソール上でhelp(ion)としてみると、matplotlib.pyplotに属している関数であることがわかります。または、オブジェクトエディターのSourceをConsoleにしてから、コンソール上でion()を実行すると同様の説明がでてきます。
先程説明した「トップレベルのネームスペースにインポートされた」というのは、どういう意味かというと通常はimport文は
import pylab
のように書くのですが、その場合pylabの関数であるionにアクセスするには本来pylab.ion()という感じに書きます。しかし、from文で始まるimportではpylabの下にあるものをpylab抜きでアクセスできるように掘り起すので、pylab.ion()がion()でアクセスできるようになって、タイピングが少なくて済むようになったのです。(ちょっとややこしいですが、このpylab.ion自体はmatplotlib.pyplot.ionを呼び出していてるので、同じものです。)
このようにトップレベルにいろいろとインポートするとタイピングは楽になりますが、やり過ぎると同じ名前の関数があった場合、上書きされてしまったりする問題があるので、基本的にはfromは使わないほうが無難です。ただし、pylabの場合、MATLABのような環境を作るためにトップレベルにインポートするように意図されていますのでfrom pylab import *が普通の使い方です。
プロットしてみる
その次にはいよいよ適当にデータを入力してみましょう。ここではPythonのデータタイプであるリストを使ってデータを格納します。
x = [1, 2, 3]
y = [10, 20, 100]
リストはこのようにスクエアブラケットで囲みます。MATLABのように数字をスペースで区切るとエラーなのでカンマを入れてください。
いよいよプロットしてみましょう。
plot (x, y)
Figure 1というウィンドウがでてきましたね。
線の色を変えたりマーカーをつけたりするのはMATLABと同様にできます。
plot (x, y, 'ro-')
rはRed、oはマーカーの指定、-は線のありの指定です。
では、もうちょっと付け加えて見ましょう。
clf()
plot (x, y, 'ro-')
y2 = np.random.randint(0,100,3)
plot (x, y2, 'bv-')
legend(["toy_data", "random_data"], loc="best")
xlim([0, 4])
ylim([0,110])
clf文では先程のプロットをクリアしています。 np.random.randintはランダムで0から100までの整数が3つのnumpy arrayを生成しています。plotは基本はnumpy arrayを受け取りますが、リストでも、タプルでも受け付けます。 legendはレジェンド生成です。locはロケーションで、bestにするとできるだけデータと重ならない位置を選んでくれます。xlimとylimはx,y軸の範囲を指定しています。axis([0,4,0,110])とやっても同じことになります。
ここで使った関数の引数がよくわからない場合、オブジェクトエディターのSourceをConsoleにして調べたい関数をタイプし、左のカッコまで書くとオブジェクトエディターにて説明がでてきます。例えばclfならclf(まで書くと出ます。また、help()でも同じ説明が見れます。その場合カッコなしでhelp(clf)とします。
まあ、ここまででとりあえずSpyderの使い方の感じがつかめたと思います。
pylabについてもっと知りたい方は、このNicolas P. RougierさんのMatplotlib tutorialというチュートリアルが素晴らしいです。
その3、その4では、いろいろと脱線したので興味があったら見て頂いて、次はその5 文字列、リスト、numpyスライシングへ飛ぶことをおすすめします。
目次
« Android版のFeedlyでみると時事ドットコムのサムネイルがカオスで楽しい件 | トップページ | Also Known As Umeboshi »
「日記・コラム・つぶやき」カテゴリの記事
- だらだら日記だ(2023.11.26)
- Letter from home、September15thなどなどのピアノアレンジが素晴らしい件(2018.08.03)
- 2日半のfasting(断食)で劇的おなら予防。(2017.12.18)
「Python」カテゴリの記事
- Noteの記事をPythonでバックアップしといた。(2021.05.05)
- JupyterLabでも好きな外部エディターを使いたい!(2018.05.02)
- ローカルエリア内のJupyterLabサーバーにLAN経由で接続する。(2018.05.02)
- Juliaやってみよう。五日目。Pythonと速度比較。(2017.08.01)
- Juliaやってみよう。四日目。@timeでプロファイリング(2017.07.16)
「今から始めるPython」カテゴリの記事
- 今から始めるPython その6 numpyの基本 スライシングの続き(2014.10.03)
- 今から始めるPython その5 文字列、リスト、numpyスライシング(2014.08.02)
- 今から始めるPython その4 pylabネームスペースの解説(2014.07.26)
- 今から始めるPython その3 Site-Packagesってなに。モデュールのインストール・アンインストール(2014.03.17)
- 今から始めるPython その2 Spyderを使う(2014.03.11)