Kivy グラフを表示する(Python Kivyの取説・使い方 第11回)
グラフを表示する方法
今回はMatplotlibモジュールを使ってグラフを表示していきます。BoxLayoutの上にラベル、真ん中にグラフ、下にボタンを表示させたいと思います。
プログラムのコード
# フル画面を解除 from kivy.config import Config Config.set('graphics', 'fullscreen', 0) from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.label import Label from kivy.garden.matplotlib.backend_kivyagg import FigureCanvasKivyAgg import numpy as np import matplotlib.pyplot as plt class GraphView(BoxLayout): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) fig, ax = plt.subplots() x = np.linspace(-4, 4) ax.set_xlabel('X label') ax.set_ylabel('Y label') ax.set_title('Trigonometric functions') ax.grid(True) ax.plot(x, np.sin(x), label='sin(x)') ax.plot(x, np.cos(x), label='cos(x)') ax.legend() widget = FigureCanvasKivyAgg(fig) self.add_widget(widget) class MainScreen(BoxLayout): pass class TestApp(App): def build(self): return MainScreen() if __name__ == '__main__': TestApp().run()
kvファイル(test.kv)
<MainScreen>: BoxLayout: orientation: "vertical" Label: size_hint_y: 0.2 text: 'graph of Matplotlib' GraphView: Button: size_hint_y: 0.3 text: 'button' <GraphView>:
解説
kvファイルに「BoxLayout」を作ってその中に「Label」と「GraphView」と「Button」を作ります。「GraphView」はクラスを作るため「<GraphView>」を作っておきます。
メインプログラムの「class GraphView(BoxLayout):」でグラフを作ります。
fig, ax = plt.subplots()
figure(図全体)とaxes(座標軸)を用意します。
x = np.linspace(-4, 4)
グラフのx軸の範囲
ax.set_xlabel('X label') ax.set_ylabel('Y label')
x軸のラベルとy軸のラベル
ax.set_title('Trigonometric functions')
グラフの上に表示されるタイトル
ax.plot(x, np.sin(x), label='sin(x)')
グラフに描き込む(x値, y値, 凡例用のラベル)
ax.legend()
グラフに凡例を表示する
widget = FigureCanvasKivyAgg(fig)
self.add_widget(widget)
グラフをウィジェットとして追加する
まとめ
はじめてグラフの表示を勉強しましたが、いろんな場面で使えそうです。アニメーション(動くグラフ)も作ってみたいですが今後の課題にします。
次回は日本語表示と日本語入力を詳しくやりたいと思います。
保存ファイル
lesson67.py
文責:Luke