gpt4 book ai didi

python - 如何在框架内绘制直方图?

转载 作者:太空宇宙 更新时间:2023-11-04 01:53:48 24 4
gpt4 key购买 nike

到目前为止,我正在运行 plt.hist 函数并将结果保存在图像中,然后在 mdiArea

中使用以下代码进行绘图
def test(self):
self.result = QtGui.QMdiSubWindow()
self.result.setObjectName(_fromUtf8("subWindow"))
pixmap = QtGui.QPixmap(_fromUtf8('Result.png'))
graphicsView = QtGui.QGraphicsView(self.result)
self.mdiArea.addSubWindow(self.result)
graphicsView.setGeometry(QtCore.QRect(30, 30, pixmap.width() + 10, pixmap.height() + 10))
graphicsView.setObjectName(_fromUtf8("graphicView"))
scene = QtGui.QGraphicsScene()
scene.addPixmap(pixmap)
scene.setSceneRect(QtCore.QRectF(pixmap.rect()))
scene.update()
graphicsView.setScene(scene)
self.result.resize(pixmap.width() + 60, pixmap.height() + 60)
self.result.setWindowTitle('Results')
self.result.show()

但是当我绘制一个大数据集时,直方图变得太小了。有什么方法可以直接在 de mdiArea

中使用 plt.hist 进行绘图吗

我有这个: enter image description here

我想要在窗口内:

enter image description here

顺便问一下,有没有更好的方法在直方图中显示这些数据?

最佳答案

您必须使用 Qt4 后端的 FigureCanvas 创建 Canvas (1),在下面的代码中我展示了一个示例:

import numpy as np

from PyQt4 import QtCore, QtGui

from matplotlib.backends.backend_qt4agg import (
FigureCanvas,
NavigationToolbar2QT as NavigationToolbar,
)
from matplotlib.figure import Figure


class ApplicationWindow(QtGui.QMainWindow):
def __init__(self):
super().__init__()
self.mdiArea = QtGui.QMdiArea()
self.setCentralWidget(self.mdiArea)

mu, sigma = 100, 15
x = mu + sigma * np.random.randn(10000)

self._canvas = FigureCanvas(Figure(figsize=(5, 3)))
self._ax = self._canvas.figure.subplots()
n, bins, patches = self._ax.hist(
x, 50, density=1, facecolor="green", alpha=0.75
)
self._ax.set_xlabel("Smarts")
self._ax.set_ylabel("Probability")
self._ax.set_title(r"$\mathrm{Histogram\ of\ IQ:}\ \mu=100,\ \sigma=15$")
self._ax.axis([40, 160, 0, 0.03])
self._ax.grid(True)

widget = QtGui.QMainWindow()
widget.setCentralWidget(self._canvas)
widget.addToolBar(
QtCore.Qt.BottomToolBarArea, NavigationToolbar(self._canvas, self)
)
sub_window = QtGui.QMdiSubWindow()
sub_window.setWidget(widget)
self.mdiArea.addSubWindow(sub_window)


if __name__ == "__main__":
import sys

qapp = QtGui.QApplication(sys.argv)
app = ApplicationWindow()
app.show()
sys.exit(qapp.exec_())

enter image description here


(1) Embedding in Qt

关于python - 如何在框架内绘制直方图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57367474/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com