programming

matplotlib の libping 問題の解決方法

matplotlib を使おうとすると以下のようなエラーが出た。その際に行った解決方法のメモ。 Traceback (most recent call last): File "trapezoid.py", line 4, in import matplotlib.pyplot as plt File "/usr/local/lib/python2.7/site-packages/matplotlib/…

matplotlibで等高線を書く その2

schwefel.png: CS = ax.contour(x, y, z, ) 等高線図をプロット ax.clabel(CS) 各等高線に値を記入 contour関数のオプション (一部) cmap: カラーマップ clabel関数のオプション (一部) fontsize: フォントの大きさ inline: True なら、値の周りの等高線を消…

matplotlibで等高線図を書く

schwefel.png: ax.contour(x, y, z, zdir=, offset=) contour関数のオプション(一部) zdir: どの平面に投射するか(x, y, zのいずれか) offset: 平面のどの位置に描画するか cmap: カラーマップ #!/usr/bin/env python #coding:utf-8 from mpl_toolkits.mplot…

matplotlibでサーファイスプロットする

schwefel.png: surf = ax.plot_surface(x, y, z) 三次元プロット fig.colorbar(surf) カラーバーの表示 plot_surface関数のキーワード(一部) cmap: カラーマップの指定 (hot, gray, coolwarm など) cstride: x方向の色のプロットのステップ数(デフォルト値: …

numpy で3変数の回帰分析

polyfit.png: np.polyfit(x, zip(y,z), n) n次式で3変数の回帰分析 3Dデータのプロット ax = fig.add_subplot(1, 1, 1, projection="3d", azim=) ax.plot(x,y,z) azim に値を代入して視点を変える #!/usr/bin/env python #coding:utf-8 from mpl_toolkits.mp…

numpy で2変数の回帰分析

polyfit.png: np.polyfit(x, y, n) n次式で2変数の回帰分析 np.polyval(p, t): pで表される多項式に t を代入し、値を計算して返す p[0]*t**(N-1) + p[1]*t**(N-2) + ... + p[N-2]*t + p[N-1] #!/usr/bin/env python #coding: utf-8 import matplotlib.pyplo…

numpy の基本その8

サイズの異なる配列同士を足すと、大きいほうの配列にサイズを変換の上、演算を行う これをブロードキャストという #!/usr/bin/env python #coding:utf-8 import numpy as np def work(): a = np.array([[ 0, 1, 2],[ 0, 1, 2],[ 0, 1, 2],[ 0, 1, 2]]) b = …

numpy の基本その7

a[::2] += 3: a の行列に対し、2要素置きに3を加算する a[ [2,5,1,8] ]: a の行列のうち、 2, 5, 1, 8 番目の要素を返す a[ [0,1,1,2], [2,1,3,3] ] → (a[0][2], a[1][1], a[1][3], a[2][3]) a[ [ [0,1], [1,2] ], [ [2,1], [3,3] ] ] → ( (a[0][2], a[1][1]…

numpy の基本 その6

b = (a % 3 == 0): 3で割った余りが0かどうか、各要素に対して判定し、結果を配列で返す a[b]: 3で割った余りが0である要素のみを返す ここで返す値は、*コピー* であり、参照ではない点に注意 #!/usr/bin/env python #coding:utf-8 import numpy as np def …

numpy の基本 その5

np.random.random_integers(lo,hi,size): [lo-hi]間のランダムな整数で初期化した、size(任意の次元数の行列を指定可)の行列を返す np.cumsum(a, axis=None): 行列aの (0, 0) からの累積和を、各要素ごとに計算 axis: 0で縦方向に累積、1で縦方向に累積 np.m…

numpyの基本 その4

test1.png: test2.png: mydraw.png: pylab.imsave(filename, image): 画像ファイルに出力する pylab.imread(filename): 画像ファイルを読み込み、行列データとして返す (row行, col列, RGB3要素) の行列データとして返ってくる。(row, col は、画像ファイル…

numpy の基本 その3

work1(): numpy.ndarray のメソッド a.shape: 行列のサイズ(行,列)をタプルで返す a.size: 行列の全要素数を返す work2(): 参考URLに記載されていた練習問題の解答 #!/usr/bin/env python #coding:utf-8 import numpy as np def work1(): a = np.arange(12).…

numpyの基本 その2

numpy.ndarray 型の演算子、メソッド a *= 4 (ただし、a は numpy.ndarray型) で、a の各要素を4倍 a **= 2 (ただし、a は numpy.ndarray型) で、a の各要素を2乗 np.diag([0,1,2,3]): 対角要素が 0, 1, 2, 3 の 4行4列の行列を返す a.reshape(3,4): a を 3…

numpy の基本

numpy の関数 np.arange(bgn, end, step): [bgn, end) 間, step 刻みの値を返す np.linspace(bgn, end, nPt): [bgn, end] 間, nPt個の等間隔な値を返す np.ones(row, col): row行, col列の、各要素が 1 である行列を返す np.eye(n): n行, n列の単位行列を返…

ipython + matplotlib で試しに何かプロットしてみる

コンソールで以下を入力し、ipythonを起動。 $ ipython -pylab ipythonで以下を入力 In [1]: plot([1,2,3,4]) In [2]: plot([0,3,2,7]) In [3]: draw() すると、以下のようなウィンドが表示される。

ipython 使用に際して起こった問題のメモ

コンソールより、以下を入力して ipython を起動。 $ ipython -pylab すると、以下のようなエラーが出る。 TclError: no display name and no $DISPLAY environment variable どうやら、環境変数 $DISPLAY に値がセットされていないのが問題そうなので、以下…

ipython のインストール

ipython & matplotlib の組み合わせで、対話的にグラフのプロットを行うことができる。 https://github.com/ipython/ipython/downloads より、ipython-0.13.1.tar.gz をダウンロード 解凍して生成したフォルダに移動して、 python setup.py install http://m…

SciPy のインストール

試行錯誤してみたが、私の環境(Cygwin)では、以下のやり方を試そうとして build でうまくいかなかった。 ここ(http://sourceforge.net/projects/scipy/files/) より、scipy-0.11.0.tar.gz をダウンロード。 解凍して生成したフォルダに移動して、 python set…

matplotlib のインストール方法

1. NumPy のインストール ここ(http://sourceforge.net/projects/numpy/files/) より、numpy-1.6.2.tar.gz をダウンロード。 解凍して生成したフォルダに移動して、以下のコマンドを実行。 $ python setup.py build $ python setup.py install 2. matplotlib…

テキスト表示の際、図中の座標値を指定

関数 ax.text(x,y,txt) とすると、描画するデータを基にした(x,y)座標にテキストを表示する。 関数 ax.text(x,y,txt,transform=ax.transAxes) とすると、図の上での(x,y)座標にテキストを表示する。 #!/usr/bin/env python import matplotlib.pyplot as plt …

グラフのラベルが重ならないよう自動調整

調整した場合: 調整しない場合: fig.tight_layout() とすることで、グラフ同士のラベルが重ならない程度にグラフを小さくする。 #!/usr/bin/env python import matplotlib.pyplot as plt def plot(): fig = plt.figure() for r in range(3): for c in range(…

プロット図を縮小して空きを作る(応用)

図の右側に空きを作り、そこに箱髭図の各値(中央値、箱の上端、箱の下端、髭の上端、髭の下端、外れ値)を表示する。 #!/usr/bin/env python import random import dateutil.parser as parser import matplotlib.pyplot as plt import matplotlib.dates as md…

プロット図を縮小して空きを作る

縮小した図: 縮小しない図: fig.subplots_adjust(top=0.7) とし、図の上側に空きを作る。 #!/usr/bin/env python import random import matplotlib.pyplot as plt def plot(): xval = [random.normalvariate( 50,100) for i in range(10000)] yval = [random…

箱髭図の値

箱髭図の各値(中央値、箱の上端、箱の下端、髭の上端、髭の下端、外れ値)を取り出す。 下記の例では、図の右側に空きを作るため、空の箱髭図を二つプロットするという姑息な事をしている。(2012/12/31追記: こちら に、図を縮小して空きを作り、そのスペース…

箱髭図のプロット, その2

横軸を2010年1月〜4月の日付とし、各日[10-50]間の乱数を100個生成し、それを箱髭図としてプロット。 横軸のラベルの表示を毎月1日、15日のみにする。 import random import dateutil.parser as parser import matplotlib.pyplot as plt import matplotlib.d…

箱髭図のプロット

ラベルA: [10-50]間の乱数を1000個生成し、それを箱髭図としてプロット。 ラベルB: 平均5, 標準偏差30 の正規分布に従う乱数を1000個生成し、それを箱髭図としてプロット。 ラベルC: 平均10, 標準偏差20 の正規分布に従う乱数を1000個生成し、それを箱髭図と…

時系列データのプロット, その2

横軸を2010年1月〜4月の日付とし、各日[10-50]間の乱数をプロット。 横軸のラベルの表示を毎月1日、15日のみにする。 import random import dateutil.parser as parser import matplotlib.pyplot as plt import matplotlib.dates as mdates def plot(): x = …

時系列データのプロット

[3-7]の乱数値、[4-9]の乱数値を生成して、30分刻みの時系列データとしてプロット #!/usr/bin/env python import random import dateutil.parser as parser import matplotlib.pyplot as plt import matplotlib.dates as mdates def plot(): x = ["00:00", "…

散布図のプロット

平均 100, 標準偏差 50 の正規分布に従う乱数を10000個生成(x要素のデータとする)。 平均 -200, 標準偏差 100 の正規分布に従う乱数を10000個生成(y要素のデータとする)。 各xy要素を散布図としてプロットする。 #!/usr/bin/env python import random import…

ヒストグラムのプロット

平均 50, 標準偏差 250 の正規分布に従う乱数を10000個生成し、 そのヒストグラムを作成する。 #!/usr/bin/env python import random import matplotlib.pyplot as plt def plot(): mu = 50 sigma = 250 MAX = 1000 MIN = -1000 N = 10000 data = [random.no…