matplotlibをpyqtに埋め込む方法の例
2916 ワード
私の最終整理は参考にしてください。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
# coding:utf-8
import matplotlib
# matplotlib FigureCanvas ( Qt5 Backends FigureCanvas QtWidgets.QWidget)
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtWidgets import QDialog, QPushButton, QVBoxLayout
import matplotlib.pyplot as plt
import numpy as np
import sys
""" pyplot API API matplotlib GUI """
class Main_window(QDialog):
def __init__(self):
super().__init__()
# , Figure, Axes, FigureCanvas
# 1 figure axes
self.figure, (self.ax1, self.ax2) = plt.subplots(figsize=(13, 3), ncols=2)
# 2 figure axes
# 2.1 plt.figure() / Figure() figure,
self.figure = plt.figure(figsize=(5,3), facecolor='#FFD7C4')
# self.figure = Figure(figsize=(5,3), facecolor='#FFD7C4')
# 2.2 plt.subplots() / plt.add_subplot() axes,
(self.ax1, self.ax2) = self.figure.subplots(1, 2)
# ax1 = self.figure.add_subplot(121)
# ax2 = self.figure.add_subplot(122)
# 3 figure canvas
self.canvas = FigureCanvas(self.figure)
self.button_draw = QPushButton(" ")
self.button_draw.clicked.connect(self.Draw)
#
layout = QVBoxLayout()
layout.addWidget(self.canvas)
layout.addWidget(self.button_draw)
self.setLayout(layout)
def Draw(self):
AgeList = ['10', '21', '12', '14', '25']
NameList = ['Tom', 'Jon', 'Alice', 'Mike', 'Mary']
# AgeList int
AgeList = list(map(int, AgeList))
# x,y numpy , matplotlib
self.x = np.arange(len(NameList)) + 1
self.y = np.array(AgeList)
# tick_label x ,( :color ,width )
self.ax1.bar(range(len(NameList)), AgeList, tick_label=NameList, color='green', width=0.5)
for a, b in zip(self.x, self.y):
self.ax1.text(a-1, b, '%d' % b, ha='center', va='bottom')
plt.title("Demo")
pos = self.ax2.imshow(np.random.random((100, 100)), cmap=plt.cm.BuPu_r)
self.figure.colorbar(pos, ax=self.ax2) # colorbar
self.canvas.draw()
#
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
main_window = Main_window()
main_window.show()
app.exec()
まとめとしては、特定の位置にmatiplotlibを配置するには、対象に向けたAPIを使用する必要がありますが、pylotを混合するAPIは、コードをより簡単にすることができます。以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。