Pythonistaを使って最高気温と最低気温をグラフ化


press
Pythonistaを使って最高気温と最低気温をグラフ化

前回作った気象庁のサイトからBeautifulSoup4を使ってスクレイピングするプログラムの応用編として、今回はiOSアプリのPythonistaを使って最高気温と最低気温をグラフ化します。グラフ化にはMatplotlibを使用します。

基本的なコードは前回の記事と同じなので、詳しい説明が見たい方はこちらからどうぞ。

Pythonistaでプログラミング

基本的には前回のコードと同じですが、Pythonistaではlmxlが使用できないので、soup = BeautifulSoup(url, 'html.parser')としてhtml.parserを使用しています。

import urllib.request
from bs4 import BeautifulSoup
import re
import matplotlib.pyplot as plt

url = urllib.request.urlopen('https://www.jma.go.jp/jp/week/315.html')
soup = BeautifulSoup(url, 'html.parser')

days = soup.find("table", {"id": "infotablefont"}).find_all("tr")[0].find_all("th")
max_temp = soup.find("table", {"id": "infotablefont"}).find_all("tr")[4].find_all("td")
min_temp = soup.find("table", {"id": "infotablefont"}).find_all("tr")[5].find_all("td")

daylist = []
for day in days:
	day = day.text

	if '日付' not in day:
		daylist.append(day[:-1])

maxtemplist = []
for maxtemp in max_temp:
	maxtemp = maxtemp.text

	if '最高' not in maxtemp:
		maxtemp = maxtemp.replace('\n', '').replace('\t', '').replace('(', '{').replace(')', '}')
		maxtemp = re.sub('{.*?}', '', maxtemp)
		
		if '/' in maxtemp:
			maxtemp = None
		else:
			maxtemp = int(maxtemp)

		maxtemplist.append(maxtemp)

mintemplist = []
for mintemp in min_temp:
	mintemp = mintemp.text

	if '最低' not in mintemp:
		mintemp = mintemp.replace('\n', '').replace('\t', '').replace('(', '{').replace(')', '}')
		mintemp = re.sub('{.*?}', '', mintemp)
		
		if '/' in mintemp:
			mintemp = None
		else:
			mintemp = int(mintemp)

		mintemplist.append(mintemp)

x = daylist
plt.plot(x, maxtemplist, label='Max', color="red", marker="o")
plt.plot(x, mintemplist, label='Min', color="blue", marker="o")
plt.title("Weekly weather")
plt.xlabel("Day")
plt.ylabel("Temp")
plt.legend()
plt.show()

x = daylistは、一週間分の件数を代入しています。
plt.plot(x, maxtemplist, label='Max', color="red", marker="o")plt.plot(x, mintemplist, label='Min', color="blue", marker="o")は、順番に一週間分の件数、最高・最低気温のリスト、ラベル名、線の色、マーカーの種類を指定しています。
plt.title("Weekly weather")は、タイトルを指定しています。
plt.xlabel("Day")は、X軸のラベル名を指定しています。
plt.ylabel("Temp")は、Y軸のラベル名を指定しています。
plt.legend()は、凡例を表示します。
plt.show()は、グラフを表示します。

Pythonistaの画面

Pythonista上のソースコード

以下の様なグラフが出力されます。

週間気温情報のグラフ

株式会社ファントムへのお問い合わせ

群馬県でPythonを使ったAIやソフトウェアを開発している株式会社ファントムが運営しています。




    Show Comments (1)

    Comments

    • def文を用いて共通の処理を関数化する – Fantom blog

      […] Pythonistaを使って最高気温と最低気温をグラフ化 […]

    Related Articles

    Django

    Djangoでモジュールを作りviews.pyからimportして呼び出す

    Djangoでモジュールを作りviews.pyからimportして呼び出す方法です。 同じ処理を何度も書いたり、同じ処理を複数回呼び出したりするときは、その処理をモジュール化してviews.pyからimportして呼び出 […]

    Posted on by press
    Python

    Pillowを使って画像を合成する

    Pillowを使って画像を合成する方法です。GitHubリポジトリ 上の2つの画像を合成して、下の画像を生成します。 Pillowのインストール バージョン確認 ディレクトリ構造 画像をリサイズ base_image = […]

    Posted on by press

    最新情報をお届けします!

    メーリングリストに登録するとファントムの最新情報をお届けします

    お客様のメールアドレスを共有することはありません