📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
細 文字列「</source>」を「</syntaxhighlight>」に置換 |
|||
| (同じ利用者による、間の6版が非表示) | |||
| 26行目: | 26行目: | ||
<br> | <br> | ||
< | <syntaxhighlight lang="python"> | ||
# - * - coding: utf8 - * | # - * - coding: utf8 - * | ||
| 34行目: | 34行目: | ||
from PyQt5.QtCore import * | from PyQt5.QtCore import * | ||
from PyQt5.QtWidgets import * | from PyQt5.QtWidgets import * | ||
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas | from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas | ||
| 41行目: | 40行目: | ||
class | class MainWindow(QMainWindow): | ||
def __init__(self): | def __init__(self, parent=None): | ||
super(MainWindow, self).__init__(parent) | |||
self.left = 10 | |||
self.top = 10 | |||
self.title = "PyQt5 matplotlib example - pythonspot.com" | |||
self.width = 640 | |||
self.height = 400 | |||
self.setWindowTitle(self.title) | |||
self.setGeometry(self.left, self.top, self.width, self.height) | |||
m = PlotCanvas(self, width=5, height=4) | |||
m.move(0,0) | |||
button = QPushButton('PyQt5 button', self) | |||
button.setToolTip('This s an example button') | |||
button.move(500,0) | |||
button.resize(140,100) | |||
| 68行目: | 65行目: | ||
def __init__(self, parent=None, width=5, height=4, dpi=100): | def __init__(self, parent=None, width=5, height=4, dpi=100): | ||
fig = Figure(figsize=(width, height), dpi=dpi) | |||
self.axes = fig.add_subplot(111) | |||
FigureCanvas.__init__(self, fig) | |||
self.setParent(parent) | |||
FigureCanvas.setSizePolicy(self, QSizePolicy.Expanding, QSizePolicy.Expanding) | |||
FigureCanvas.updateGeometry(self) | |||
self.plot() | |||
def plot(self): | def plot(self): | ||
data = [random.random() for i in range(25)] | |||
ax = self.figure.add_subplot(111) | |||
ax.plot(data, 'r-') | |||
ax.set_title("PyQt Matplotlib Example") | |||
self.draw() | |||
if __name__ == '__main__': | if __name__ == '__main__': | ||
app = QApplication(sys.argv) | app = QApplication(sys.argv) | ||
window = MainWindow() | |||
window.show() | |||
sys.exit(app.exec_()) | sys.exit(app.exec_()) | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
上記のサンプルコードを実行すると、コンソール上に次のような警告が出力される。(挙動自体に影響はないと思われる)<br> | 上記のサンプルコードを実行すると、コンソール上に次のような警告が出力される。(挙動自体に影響はないと思われる)<br> | ||
| 103行目: | 101行目: | ||
<br><br> | <br><br> | ||
== Matplotlibで作成するグラフ == | == Matplotlibで作成するグラフ (2) == | ||
上記のセクションにおいて、警告が出力される原因は、<code>add_subplot()</code>関数が2箇所に存在しているからである。<br> | 上記のセクションにおいて、警告が出力される原因は、<code>add_subplot()</code>関数が2箇所に存在しているからである。<br> | ||
これは、上記のサンプルコードでは、<code>PlotCanvas</code>クラスのコンストラクタと<code>plot</code>関数の中で、それぞれ<code>add_subplot()</code>関数を使用しており、<br> | |||
axesに関わる変数を2回定義(重複)しているから警告が出力される。<br> | |||
<br> | <br> | ||
したがって、まず、<code>plot</code>関数内にある以下の行を削除する。<br> | したがって、まず、<code>plot</code>関数内にある以下の行を削除する。<br> | ||
< | <syntaxhighlight lang="python"> | ||
ax = self.figure.add_subplot(111) | ax = self.figure.add_subplot(111) | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
次に、上記で削除した変数axが使用されている箇所を修正する。<br> | 次に、上記で削除した変数axが使用されている箇所を修正する。<br> | ||
| 129行目: | 126行目: | ||
以下のサンプルコードでは、警告が出力されないように修正を加え、上記の3つの機能を実装している。<br> | 以下のサンプルコードでは、警告が出力されないように修正を加え、上記の3つの機能を実装している。<br> | ||
なお、クラス名や変数名等は変更している箇所がある。<br> | なお、クラス名や変数名等は変更している箇所がある。<br> | ||
< | <syntaxhighlight lang="python"> | ||
# - * - coding: utf8 - * | # - * - coding: utf8 - * | ||
| 136行目: | 133行目: | ||
import datetime | import datetime | ||
from PyQt5.QtCore import * | |||
from PyQt5.QtWidgets import * | from PyQt5.QtWidgets import * | ||
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas | from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas | ||
| 147行目: | 144行目: | ||
class plotGraph(QMainWindow): | class plotGraph(QMainWindow): | ||
def __init__(self): | def __init__(self, parent=None): | ||
super().__init__() | super(plotGraph, self).__init__(parent) | ||
self.title = "グラフを表示するウインドウ" | self.title = "グラフを表示するウインドウ" | ||
self.width = 700 | self.width = 700 | ||
| 197行目: | 194行目: | ||
self.w.setLayout(main_layout) | self.w.setLayout(main_layout) | ||
self.setCentralWidget(self.w) | self.setCentralWidget(self.w) | ||
| 237行目: | 233行目: | ||
app = QApplication(sys.argv) | app = QApplication(sys.argv) | ||
window = plotGraph() | window = plotGraph() | ||
window.show() | |||
sys.exit(app.exec_()) | sys.exit(app.exec_()) | ||
| 242行目: | 239行目: | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
main() | main() | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
上記のサンプルコードを実行すると、下図のような画面が表示される。<br> | 上記のサンプルコードを実行すると、下図のような画面が表示される。<br> | ||