我有一个问题,希望你能帮助我.

第一次单击按钮时,

有人知道为什么会这样吗?

import sys
import os
os.environ["QT_API"] = "pyqt5"

from qtpy import QtWidgets
import numpy as np
from pyvista import Chart2D
import pyvista as pv
from pyvistaqt import QtInteractor, MainWindow

class MyMainWindow(MainWindow):

    def __init__(self, parent=None, show=True):
        QtWidgets.QMainWindow.__init__(self, parent)
        self.frame = QtWidgets.QFrame()
        vlayout = QtWidgets.QVBoxLayout()
        self.plotter = QtInteractor(self.frame)
        btn1 = QtWidgets.QPushButton("Button 1", self)
        vlayout.addWidget(btn1)
        btn1.clicked.connect(self.buttonClicked)
        vlayout.addWidget(self.plotter)
        self.frame.setLayout(vlayout)
        self.setCentralWidget(self.frame)
        self.show()


    def buttonClicked(self):

        self.plotter.clear()
        data = np.random.standard_normal(size=(100, 3))
        actor = self.plotter.add_points(data)
        chart = Chart2D()
        _x = np.random.standard_normal(100)
        _y = np.random.standard_normal(100)
        chart.scatter(_x, _y, color="tab:blue", style="d", label="Scores")
        self.plotter.add_chart(chart)
        self.plotter.add_mesh(pv.Sphere())

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = MyMainWindow()

    sys.exit(app.exec_())

推荐答案

我认为您发现了一个bug,感谢您提供了一个很好的示例!这在PyVista版本0.35.2中已经修复,更新包应该可以使事情正常进行.以下答案的原始(预修复)版本.


图表存储在名为__charts的私有属性中,可通过绘图仪Renderer上名为_charts的私有属性访问.一、 e.self.plotter.renderer._charts将为您提供一个私有pyvista.plotting.charts.Charts对象.这实际上是通过plotter.add_chart()跟踪添加的单个图表.

但拨打plotter.clear()并不能清除这个图表列表.我还不清楚这到底是如何干扰重新绘制的(我怀疑早期的图表不知怎么会阻止添加新的图表,但新的图表已经从绘图仪中删除).但是在plotter.clear()上清除图表也是有意义的,如果我通过编辑PyVista的库代码来做到这一点,你的问题就会消失.

我有opened a pull request in PyVista英镑来修复这个问题(或者了解我是否错误地认为这是一个bug).在这一情况发生并发布修复程序之前,您可以在自己的代码中的回调中破解等效步骤:

        self.plotter.clear()
        self.plotter.renderer._charts.deep_clean()  # <- hacky workaround

不用说,这是一种临时措施,在您自己的代码中使用这种形式非常糟糕.一旦我们有了一个新的版本和这个固定的,你应该删除这一行.

Python相关问答推荐

Tkinter滑动条标签.我不确定如何删除滑动块标签或更改其文本

如何使用stride_tricks.as_strided逆转NumPy数组

Polars比较了两个预设-有没有方法在第一次不匹配时立即失败

可变参数数量的重载类型(args或kwargs)

如何记录脚本输出

Python库:可选地支持numpy类型,而不依赖于numpy

Julia CSV for Python中的等效性Pandas index_col参数

当从Docker的--env-file参数读取Python中的环境变量时,每个\n都会添加一个\'.如何没有额外的?

我如何使法国在 map 中完全透明的代码?

如果条件不满足,我如何获得掩码的第一个索引并获得None?

把一个pandas文件夹从juyter笔记本放到堆栈溢出问题中的最快方法?

多指标不同顺序串联大Pandas 模型

未知依赖项pin—1阻止conda安装""

多处理队列在与Forking http.server一起使用时随机跳过项目

dask无groupby(ddf. agg([min,max])?''''

Python Pandas—时间序列—时间戳缺失时间精确在00:00

具有相同图例 colored颜色 和标签的堆叠子图

504未连接IB API TWS错误—即使API连接显示已接受''

Python如何导入类的实例

python3中np. divide(x,y)和x/y有什么区别?'