グラフ埋め込み
(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を削除してしまわなくて)