Python 2.5以前からある「turtle」モジュールが,Python 2.6/3.0からパワーアップしています。新しいturtleモジュールを利用すると,オブジェクト指向アプローチでさまざまなデータの可視化ができます。turtleモジュールはtkinterを利用しただけの単一モジュールになっており,140Kバイトもあります。すべての機能を紹介することはこのスペースでは無理ですので,主要な機能だけをダイジェストで紹介します。
プロッティング
このモジュールにおいて最も重要な「Turtleオブジェクト」はペンプロッタのような役割を持っています。
以下のコードで,Turtleオブジェクトを作成できます。
from turtle import *
t = Turtle()
ペンプロッタのような役割として,以下のメソッドがあります。
表1
| メソッド | 動作 |
|---|---|
| t.penup() | ペン先をキャンバスから離す |
| t.pendown() | ペン先をキャンバスに置く |
| t.setpos(x, y) | 任意の座標まで移動する |
| t.pencolor('red') | 線の色を変更する |
| t.pensize(3) | 線の太さを変更する |
| t.write('hello!') | 現在位置のすぐ上に文字列を描画 |
ペンプロッタではペンの現在位置を保持して動作しますが,Turtleオブジェクトではさらに「向き」を保持しています。そして,Turtleオブジェクトが自ら動く以下のような指令も持っています。
表2
| メソッド | 動作 |
|---|---|
| t.forward(10) | 現在の向きに10距離前進する |
| t.left(10) | 10度左に向きを変える |
| t.right(10) | 10度右に向きを変える |
| t.circle(50,240) | 回転半径50で270度の円弧を描くように進む |
これらの指令は,turtleモジュールに定義されているTurtleクラスのインスタンスに対して使うのが普通ですが,turtleモジュールそのものに対して使う方法もあります。この場合,Turtleインスタンスを作らなくても自動的に作成してくれるようです。
サンプル1
リスト1のコードで陰陽太極図のようなマーク(図1)が描けます。
リスト1
from turtle import *
t = Turtle() # タートルオブジェクト作成(初めて作るときはウインドウも作成されます)
t.circle(50,180) # 反時計回り半径50で180度まで
t.circle(-50,180) # 時計回り半径50で180度まで
t.circle(-100) # 時計回り半径100で360度まで
exitonclick() # ウインドウクリックするまで待機
図形の塗りつぶしを行いたい場合は,リスト2のように「fillcolor」指定ののち一連の図形描画命令を「begin_fill()」「end_fill()」の2命令で囲んでください。
サンプル2 - 塗りつぶし
リスト2
from turtle import *
t = Turtle()
t.fillcolor('blue')
t.begin_fill()
t.setpos(-50,100)
t.setpos(50,100)
t.setpos(0,0)
t.end_fill()
exitonclick()
閉じた図形ではない場合は,始点と終点が接続されたように塗りつぶします。

