python でグラフィック

(2025-09-02)

python はとても優秀なプログラミング言語で、ネット上にサンプルも多く、ほとんどコピペで動くものもたくさんありとても重宝していました。

表集計ソフトにデータを保存しておいてそれを元にグラフを書きます。

ケーナの練習時間をグラフにする

ケーナの練習時間を ods(LibreOffice ドキュメント) に記録しています。
それを読み込んでグラフにします。

こんな感じのデータです。

このデータから python を使ってグラフを描画します。

import matplotlib.pyplot as plt
import pandas as pd
import matplotlib.dates as mdates
# データ読み込み
df = pd.read_excel(
'/home/mituo/ドキュメント/ケーナ練習記録/ケーナ練習記録.ods',
engine="odf",
sheet_name="Sheet1"
)
# 列名を英語に
df.rename(columns={"日付": "date",
"練習時間": "daily_training",
"累積時間": "total_training"},
inplace=True)
# 型変換
df["date"] = pd.to_datetime(df["date"], errors="coerce")
df["daily_training"] = pd.to_numeric(df["daily_training"], errors="coerce")
df["total_training"] = pd.to_numeric(df["total_training"], errors="coerce")
x = df.date
y1 = df.daily_training
y2 = df.total_training
# --- 横幅を1200pxにする設定 ---
target_width_px = 1200
dpi = 150
width_inch = target_width_px / dpi
height_inch = 6
# グラフ作成
fig, axes = plt.subplots(2, 1, figsize=(width_inch, height_inch))
axes[0].bar(x, y1)
axes[0].set_title("練習時間(1日)", fontsize=10)
axes[1].plot(x, y2) # markerなし
axes[1].set_title("合計練習時間", fontsize=10)
# 日付を見やすく
for ax in axes:
ax.xaxis.set_major_formatter(mdates.DateFormatter("%m-%d"))
# 日付ラベル回転
fig.autofmt_xdate()
# --- ここが重要 ---
fig.canvas.draw() # レイアウトを確定
fig.tight_layout() # 再調整
fig.savefig("Kena_record.png", dpi=dpi, bbox_inches="tight")
plt.show()
plt.close(fig)

実行すると以下のような画像が自動的に作成されます。

ダイエット記録をグラフ化

ダイエットしているのですが、酒を割とたくさん飲むので思い通りに体重が減りません。

でも、体重の記録はダイエットを続けるモチベーションになるのでこれもなるべく記録するようにしています。

import matplotlib.pyplot as plt
import pandas as pd
class Diet():
def __init__(self):
self.book = 'diet.ods' # 絶対パス
self.outfile = 'dietrecord.png' # 絶対パス
def draw(self):
df = pd.read_excel(
self.book,
engine="odf",
sheet_name="Sheet1"
)
# 列名を英語に変換
df.rename(columns={"日付": "date", "体重": "BW"}, inplace=True)
x = df.date
y = df.BW
# --- 横幅を1200pxにする設定 ---
target_width_px = 1200
dpi = 150 # 軽さと画質のバランス
width_inch = target_width_px / dpi
height_inch = 6 # 縦はお好みで
# グラフ作成
fig, ax = plt.subplots(figsize=(width_inch, height_inch))
ax.plot(x, y)
ax.set_title("体重(Kg)", fontsize=10)
fig.autofmt_xdate()
fig.savefig(self.outfile, dpi=dpi)
if __name__ == '__main__':
diet = Diet()
diet.draw()

実行すると、

最近、豆腐お好み焼きでダイエットしているつもりなのですが、効果は今のところ少しだけのようです。

一昨年、アサヒスーパードライの生ジョッキ缶というのを妻が発見して、以来猛暑もあってほぼ毎日飲むようになってしまいました。 でも今では猛暑関係なく、冬でも飲むんですけどね。 このビールには中毒性があるようで、やめられなくなってしまいました。

カロリーは低いのですが、累積するとそれなりのカロリーにはなるので、しかも食欲を増進するのでダイエットするなら一旦断酒した方がいいとは思いますが、 とても美味しいのでそれはかなり困難です。