优化矩形处理逻辑,支持不同版本的matplotlib中axvspan返回的对象类型
This commit is contained in:
@ -12,7 +12,7 @@ from matplotlib import gridspec
|
|||||||
from matplotlib.backends.backend_qt import NavigationToolbar2QT
|
from matplotlib.backends.backend_qt import NavigationToolbar2QT
|
||||||
from matplotlib.backends.backend_qtagg import FigureCanvasQTAgg
|
from matplotlib.backends.backend_qtagg import FigureCanvasQTAgg
|
||||||
from matplotlib.collections import PolyCollection
|
from matplotlib.collections import PolyCollection
|
||||||
from matplotlib.patches import Rectangle
|
from matplotlib.patches import Rectangle, Polygon
|
||||||
|
|
||||||
from numpy import array, zeros, append, linspace, place, nan
|
from numpy import array, zeros, append, linspace, place, nan
|
||||||
from overrides import overrides
|
from overrides import overrides
|
||||||
@ -2004,15 +2004,16 @@ class MainWindow_SA_label(QMainWindow):
|
|||||||
|
|
||||||
def __get_x_and_width__(self, event_rect):
|
def __get_x_and_width__(self, event_rect):
|
||||||
"""Get the width of a rectangle in data coordinates."""
|
"""Get the width of a rectangle in data coordinates."""
|
||||||
# pyside6.9.0 axvspan 返回的是一个Rectangle对象
|
# matplotlib >=3.9 axvspan 返回的是一个Rectangle对象
|
||||||
# pyside6.9.1 axvspan 返回的是一个PolyCollection对象
|
# matplorlib < 3.9 axvspan 返回的是一个PolyCollection对象
|
||||||
if isinstance(event_rect, Rectangle):
|
if isinstance(event_rect, Rectangle):
|
||||||
x = event_rect.get_x()
|
x = event_rect.get_x()
|
||||||
width = event_rect.get_width()
|
width = event_rect.get_width()
|
||||||
elif isinstance(event_rect, PolyCollection):
|
elif isinstance(event_rect, Polygon):
|
||||||
verts = event_rect.get_paths()[0].vertices
|
verts = event_rect.get_xy()
|
||||||
x = verts[0, 0]
|
x = verts[0, 0]
|
||||||
width = verts[2, 0] - verts[0, 0]
|
width = verts[2, 0] - verts[0, 0]
|
||||||
|
|
||||||
else:
|
else:
|
||||||
raise TypeError("Unsupported event_rect type")
|
raise TypeError("Unsupported event_rect type")
|
||||||
return x, width
|
return x, width
|
||||||
|
|||||||
Reference in New Issue
Block a user