見出し画像

グラフ埋め込み

(Python学習初心者の試行錯誤・備忘録です)

すうち様より、こちらのbear_montblanc(Be4rR)様の記事の存在を教えていただきました。記事中ではこういうグラフが例として出ていました。これがまさにやりたいことなんです。

早速サンプルコードを一昨日構築したばかりのPython3.12.3の環境

に、そのまま貼り付けて実行してみると、

Canvasの部分が潰れてしまうようです。記事における実行環境はPython 3.8.2とのこと。Python3.12.3では何か書き方が変わった?

例によって、copilotに聞いてみます。

環境をPython3.8にして試すべきかもしれませんが、折角最新のPython3.12.3を入れたばかりなのでもう少し粘ってみたい。
 そもそも自分は「Canvas」の扱い方を全く知らない(いじったことがない)状態なので、まずはそこから、でしょうね。matplotlibのグラフ以前の問題として、「PySimpleGUIのCanvasに何か描く」ことをしてみたいと思います。
 公式の

にある

layout = [[sg.Canvas(background_color='red', size=(100, 100))]]

このサンプルができなきゃ始まらない。こんな風に書いてみました。

import PySimpleGUI as sg

layout = [
    [sg.Text("CANVAS TEST",size=(30,1))],
    [sg.Canvas(background_color='red', size=(100, 100))]
]

window = sg.Window('Canvas test',layout)

while True:
    event, value = window.read()
    if event == sg.WIN_CLOSED or event == "Exit": 
        break
window.close()


大丈夫、潰れていなかった。
見比べていて気付いた・・Canvasにsizeの指定を入れればいいんじゃ?
bear_montblanc(Be4rR)様のコードで

layout = [[sg.Text('Embed Matplotlib Plot')],
          [sg.Canvas(key='-CANVAS-')],
          [sg.Button("Add"), sg.Button("Clear")]]

これを

layout = [[sg.Text('Embed Matplotlib Plot')],
          [sg.Canvas(key='-CANVAS-',size=(500,500))],
          [sg.Button("Add"), sg.Button("Clear")]]

としてみました。

やった!潰れず、描画できました。
(よかった、折角導入したPython3.12.3を削除してしまわなくて)

いいなと思ったら応援しよう!