Python : グラフ作成、matplotlib.pyplot

Pythonでのグラフの作成です。

今回はmatplotlib.pyplotを使います。

正直、pythonで扱うデータは画像データをすべて見るときは

ヒストグラムとかを使ってみたりしますが、それ以外のグラフはpythonで使うことは

あまりありません。

なぜかというとせいぜい数千のデータでしたらexcelでやったほうが簡単ですからね。

ただ、前回行ったπの計算とかをグラフにしようとしたら、

10万個のデータになり、エクセルだとデータを作るのに、かなりしんどかったので、

今回はグラフの作成方法です。

 

グラフの作成で使うのは、前回につくったライプニッツの公式で

作ったπ/4の計算値をy軸とその際に使った分母をx軸として作ります。

kangkang1981.hatenablog.com

 

使うモジュールは下記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)ではないグラフ

f:id:Kangkang1981:20200506220803j:plain

これだと収束していくのが良く見えないですね。。。

 

このため、x軸をlogにすると

f:id:Kangkang1981:20200506220956j:plain

こっちだとなんとなく見れますね!

 

今回のプログラムは下記です。

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について書いた記事はここにリンクを貼ってあります。

興味があればぜひご覧ください。