gpt4 book ai didi

python - Qt5 应用程序中的 matplotlib 矩形选择器图形故障

转载 作者:行者123 更新时间:2023-12-01 08:30:13 26 4
gpt4 key购买 nike

我尝试在 Qt5 应用程序中使用 Matplotlib,并希望使用 RectangleSelector,但根据参数 useblit,我要么出现图形故障,要么选择器消失。

然而,在选择时,我遇到了一个奇怪的图形故障,整个绘图似乎移动到了左上角,在底部和右侧留下了 1 厘米的黑色(或透明,如我的屏幕截图所示)。这里发生了什么?

enter image description here

复制

这将打开一个 Qt5 窗口,其中包含绘图和一些随机数据。一旦您选择了一些数据,它就会 - 为了演示 - 清除轴并绘制新的内容。

如果我们设置useblit=False,则 RectangleSelector 在第一个 ax.clear() 之后消失,如果我们设置useblit=True,我们选择时底部和右侧的黑色约为1厘米(见图)。

import sys
import matplotlib
import random
matplotlib.use('Qt5Agg')

from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
#from matplotlib.widgets import SpanSelector
from matplotlib.widgets import RectangleSelector

class Window(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
self.figure = Figure()
self.ax = self.figure.add_subplot(111)
self.canvas = FigureCanvas(self.figure)

# First data
self.ax.plot([random.random() for _ in range(50)])

# Embedding plot into Qt
layout = QVBoxLayout()
layout.addWidget(self.canvas)
self.setLayout(layout)

self.x = RectangleSelector(self.ax, self.onselect_xy,
drawtype='box',
useblit=False, # or True?
rectprops={'alpha':0.5, 'facecolor':'red'},
interactive=True)

self.canvas.draw()


def onselect_xy(self, *args, **kwargs):
self.ax.clear()
self.ax.plot([random.random() for _ in range(50)])
self.canvas.draw()

if __name__ == '__main__':
app = QApplication(sys.argv)
main = Window()
main.show()
sys.exit(app.exec_())

版本

在 macOS 10.13.6 HighSierra 上,从 conda 列表 中选择:

python                    3.7.1                haf84260_7
pyside2 5.6.0a1 py37h45ccf91_3 conda-forge
matplotlib 3.0.2 py37h54f8f79_0

最佳答案

问题似乎是旧版本的 PySide2,最新版本工作正常。另一方面,conda 不允许使用最新版本的 PySide2,因此您必须使用 virtualenv 并使用 pip 安装软件包。

关于python - Qt5 应用程序中的 matplotlib 矩形选择器图形故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53937005/

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