Python : グラフ作成、matplotlib.pyplot
Pythonでのグラフの作成です。
今回はmatplotlib.pyplotを使います。
正直、pythonで扱うデータは画像データをすべて見るときは
ヒストグラムとかを使ってみたりしますが、それ以外のグラフはpythonで使うことは
あまりありません。
なぜかというとせいぜい数千のデータでしたらexcelでやったほうが簡単ですからね。
ただ、前回行ったπの計算とかをグラフにしようとしたら、
10万個のデータになり、エクセルだとデータを作るのに、かなりしんどかったので、
今回はグラフの作成方法です。
グラフの作成で使うのは、前回につくったライプニッツの公式で
作ったπ/4の計算値をy軸とその際に使った分母をx軸として作ります。
使うモジュールは下記3つ
グラフを書くのはmatplotlib.pyplotを使います。
import matplotlib.pyplot as plt
※長いので、慣例?通りで使います。
後csvを読み込んで使うので、pandasと
piを使うために、mathの3種類のモジュールを使います。
まず、グラフに比較用として、π ÷ 4の値がほしいので、
これをmathを使って呼び出します。
pi_4 = float(math.pi / 4)
後はpandasでデータを呼び出します。
libniz_data = pd.read_csv('pi_libniz.csv')
・まずは、figure()を使ったグラフようのウィンドウを描画します。
グラフを書く際の、ご作法見たいなものです。
fig0 = plt.figure()
・次にグラフに入れるデータx軸、y軸のデータを入れます。
plt.plot(x軸、y軸)
plt.plot(libniz_data['denominator'], libniz_data['Libniz'])
・グラフだけだと寂しいので、y軸狙いの位置(π/4)を入れます。
今回のx軸は3から始まるので、最小は3、最大は適当です。
y軸は狙いがπ/4なので、この値、あとは色を赤にして、点線にしてみてます。
plt.plot([x軸最小、x軸最大],[y軸最小、y軸最大],"色",linestyle="点線")
plt.plot([3,10000000],[pi_4,pi_4],"red",linestyle="dashed")
・x軸にラベルを追加
※y軸に追加したい場合はplt.ylabel("名前")でOKです。
plt.xlabel("denominator")
・グラフを保存します。
名前はpi.jpgという名前にしています。
fig0.savefig("pi.jpg")
後はx軸をlogにしたい場合は、下記のようにxscaleというのを入れます。
plt.xscale('log')
これがx軸が通常(log)ではないグラフ
これだと収束していくのが良く見えないですね。。。
このため、x軸をlogにすると
こっちだとなんとなく見れますね!
今回のプログラムは下記です。
import matplotlib.pyplot as plt
import pandas as pd
import math
#π÷4を比較用の線として入れたいので、mathの値を使います。
pi_4 = float(math.pi / 4)
#前回つかった、csvを使用
libniz_data = pd.read_csv('pi_libniz.csv')
#新規のウィンドウを描画
#画像を保存する際はあらかじめ、figure()という宣言をしておく
fig0 = plt.figure()
#plot(x軸、y軸)
plt.plot(libniz_data['denominator'], libniz_data['Libniz'])
#狙いの線を引く、x軸が3~100000000,Y軸はpi/4、線の色を赤にして、線は点線にする。
plt.plot([3,10000000],[pi_4,pi_4],"red",linestyle="dashed")
#x軸にラベルを追加
plt.xlabel("denominator")
#グラフを保存
fig0.savefig("pi.jpg")
#ここから下は同様(logの部分が違うのみ)
fig1 = plt.figure()
plt.plot(libniz_data['denominator'], libniz_data['Libniz'])
plt.plot([3,10000000],[pi_4,pi_4],"red",linestyle="dashed")
#x軸をログスケールにする際は下記のようにします。
plt.xscale('log')
plt.xlabel("denominator(log)")
fig1.savefig("pi_log.jpg")
今までにpythonについて書いた記事はここにリンクを貼ってあります。
興味があればぜひご覧ください。