gpt4 book ai didi

python - 在 matplotlib 中更新 ConnectionPatch 的位置

转载 作者:行者123 更新时间:2023-12-03 20:22:27 26 4
gpt4 key购买 nike

我在 PyQt4 GUI 应用程序中使用 matplotlib 小部件。在图中,我使用 ConnectionPatches 来绘制线条。我一直这样引用它们:

self.x_axis1 = ConnectionPatch((0, yPos), (xPos-boxWidth/2, yPos), coordsA='data', edgecolor='w', linewidth=linewidth)
self.x_axis2 = ConnectionPatch((xPos+boxWidth/2, yPos), (cursorX, yPos), coordsA='data', edgecolor='w', linewidth=linewidth)
self.y_axis1 = ConnectionPatch((xPos, 0), (xPos, yPos-boxHeight/2), coordsA='data', edgecolor='w', linewidth=linewidth)
self.y_axis2 = ConnectionPatch((xPos, yPos+boxHeight/2), (xPos, cursorY), coordsA='data', edgecolor='w', linewidth=linewidth)

...并以典型方式将它们添加到图中:
self.ui.mpl_right.axes.add_patch(self.x_axis1)
self.ui.mpl_right.axes.add_patch(self.x_axis2)
self.ui.mpl_right.axes.add_patch(self.y_axis1)
self.ui.mpl_right.axes.add_patch(self.y_axis2)

根据 matplotlib 文档,您可以将它们的位置设置为:
self.x_axis1.set_positions((0, yPos), (xPos-boxWidth/2, yPos))
self.x_axis2.set_positions((xPos+boxWidth/2, yPos), (cursorX, yPos))
self.y_axis1.set_positions((xPos, 0), (xPos, yPos-boxHeight/2))
self.y_axis2.set_positions((xPos, yPos+boxHeight/2), (xPos, cursorY))

通常,您只需像这样在图形的 Canvas 上调用 draw() 来更新对象:
self.ui.mpl_right.figure.canvas.draw()

...但这完全没有任何作用。

目前,我只是删除它们并使用 remove() 重新添加它们:
self.x_axis1.remove()
self.x_axis2.remove()
self.y_axis1.remove()
self.y_axis2.remove()

有没有办法更新 ConnectionPatch 的位置而不必完全销毁它们并重新添加它们?

最佳答案

诀窍是使用' xy1 ' 和 ' xy2 ' 属性而不是 ' set_positions() '正如你所做的那样。所以,如果你把:

self.x_axis1.xy1 = (0, yPos)
self.x_axis1.xy2 = (xPos-boxWidth/2, yPos)
代替:
self.x_axis1.set_positions((0, yPos), (xPos-boxWidth/2, yPos))
它应该工作。

关于python - 在 matplotlib 中更新 ConnectionPatch 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40183406/

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