@@ -62,34 +62,30 @@ def qwtVerifyRange(size, i1, i2):
62
62
63
63
def array2d_to_qpolygonf (xdata , ydata ):
64
64
"""
65
- Utility function to convert two 1D-NumPy arrays representing curve data
66
- (X-axis, Y-axis data) into a single polyline (QtGui.PolygonF object).
65
+ Utility function to convert two 1D-NumPy arrays representing curve data
66
+ (X-axis, Y-axis data) into a single polyline (QtGui.PolygonF object).
67
67
This feature is compatible with PyQt4, PyQt5 and PySide2 (requires QtPy).
68
-
69
- License/copyright: MIT License © Pierre Raybaut 2020.
70
-
71
- :param numpy.ndarray xdata: 1D-NumPy array (numpy.float64)
72
- :param numpy.ndarray ydata: 1D-NumPy array (numpy.float64)
68
+
69
+ License/copyright: MIT License © Pierre Raybaut 2020-2021 .
70
+
71
+ :param numpy.ndarray xdata: 1D-NumPy array
72
+ :param numpy.ndarray ydata: 1D-NumPy array
73
73
:return: Polyline
74
74
:rtype: QtGui.QPolygonF
75
75
"""
76
- dtype = np .float64
77
- if not (
78
- xdata .size == ydata .size == xdata .shape [0 ] == ydata .shape [0 ]
79
- and xdata .dtype == ydata .dtype == dtype
80
- ):
81
- raise ValueError ("Arguments must be 1D, float64 NumPy arrays with same size" )
76
+ if not (xdata .size == ydata .size == xdata .shape [0 ] == ydata .shape [0 ]):
77
+ raise ValueError ("Arguments must be 1D NumPy arrays with same size" )
82
78
size = xdata .size
83
79
polyline = QPolygonF (size )
84
80
if PYSIDE2 : # PySide2 (obviously...)
85
81
address = shiboken2 .getCppPointer (polyline .data ())[0 ]
86
82
buffer = (ctypes .c_double * 2 * size ).from_address (address )
87
83
else : # PyQt4, PyQt5
88
84
buffer = polyline .data ()
89
- buffer .setsize (2 * size * np . finfo ( dtype ). dtype . itemsize )
90
- memory = np .frombuffer (buffer , dtype )
91
- memory [: (size - 1 ) * 2 + 1 : 2 ] = xdata
92
- memory [1 : (size - 1 ) * 2 + 2 : 2 ] = ydata
85
+ buffer .setsize (16 * size ) # 16 bytes per point: 8 bytes per X,Y value (float64 )
86
+ memory = np .frombuffer (buffer , np . float64 )
87
+ memory [: (size - 1 ) * 2 + 1 : 2 ] = np . array ( xdata , dtype = np . float64 , copy = False )
88
+ memory [1 : (size - 1 ) * 2 + 2 : 2 ] = np . array ( ydata , dtype = np . float64 , copy = False )
93
89
return polyline
94
90
95
91
0 commit comments