PySide (Qt for Python) は、Qt(キュート)の Python バインディングで、GUI などを構築するためのクロスプラットフォームなライブラリです。配布ライセンスは LGPL で公開されています。最新のバージョンは Qt6 に対応した PySide6(記事執筆時点で 6.3.2)です。
Seaborn は matplotlib をベースにした Python のデータ可視化ライブラリです。
Seaborn の FacetGrid を PySide6 のウィジェットに表示しようとしたのですが、単独のプロットと勝手が違って少しハマってしまったので、備忘録としてサンプルを作りました。
下記の OS 環境で動作確認をしました。
![]() |
Fedora Linux 37 preview | x86_64 |
python3.10 | python3.10-3.10.7-1.fc37.x86_64 | |
PySide6 | 6.3.2 | |
matplotlib | 3.6.0 | |
seaborn | 0.12.0 |
qt_seaborn_facetgrid.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# coding: utf-8 | |
from PySide6.QtCore import Qt | |
from PySide6.QtWidgets import ( | |
QApplication, | |
QMainWindow, | |
) | |
import sys | |
from matplotlib.backends.backend_qtagg import FigureCanvasQTAgg as FigureCanvas | |
from matplotlib.backends.backend_qtagg import NavigationToolbar2QT as NavigationToolbar | |
import seaborn as sns | |
import warnings | |
warnings.simplefilter('ignore', FutureWarning) | |
class MyFacetGrid(FigureCanvas): | |
def __init__(self): | |
tips = sns.load_dataset('tips') | |
g = sns.FacetGrid(tips, col='time') | |
g.map_dataframe(sns.scatterplot, x='total_bill', y='tip', hue='sex') | |
g.refline(y=tips['tip'].mean()) | |
g.add_legend() | |
super().__init__(g.fig) | |
class Example(QMainWindow): | |
def __init__(self): | |
super().__init__() | |
self.setWindowTitle('FacetGrid example') | |
self.init_ui() | |
def init_ui(self): | |
# chart | |
canvas: FigureCanvas = MyFacetGrid() | |
self.setCentralWidget(canvas) | |
# navigation for plot | |
navtoolbar = NavigationToolbar(canvas, self) | |
self.addToolBar(Qt.BottomToolBarArea, navtoolbar) | |
def main(): | |
app = QApplication(sys.argv) | |
ex = Example() | |
ex.show() | |
sys.exit(app.exec()) | |
if __name__ == '__main__': | |
main() |
qt_seaborn_facetgrid.py の実行例
参考サイト

にほんブログ村
#オープンソース

0 件のコメント:
コメントを投稿