Data-Visualization¶
- Visualization of data:
- ts : Interactive analysis of time-series data (1D and 3D).
- orientation : Visualization of 3D orientations as animated triangle.
- Orientation_OGL : Much faster 3D orientation viewer, based
- on OpenGL
1-dimensional and 3-dimensional data can be viewed. It also allows to inspect the variables of the current workspace.
Functions¶
view.ts()
… Viewer for time-series data
view.orientation()
… Visualize and animate orientations, expressed as quaternions.
Class¶
view.Orientation_OGL ([quat_in, rate, …]) |
Orientation viewer utilizing OpenGL |
- This module includes two functions:
- An interactive viewer for time-series data (“view.ts”)
- An animation of 3D orientations, expressed as quaternions (“view.orientation”)
- For the time-series viewer, variable types that can in principle be plotted are:
- np.ndarray
- pd.core.frame.DataFrame
- pd.core.series.Series
Viewer can be used to inspect a single variable, or to select one from the current workspace.
- Notable aspects:
- Based on Tkinter, to ensure that it runs on all Python installations.
- Resizable window.
- Keyboard-based interaction.
- Logging of marked events.
-
class
view.
Orientation_OGL
(quat_in=None, rate=50, looping=False, win_width=800, win_height=600)[source]¶ Orientation viewer utilizing OpenGL
In the “zero” orientation, the pointer indicating the 3D orientation will point towards the lower right. In the display, the (x/y/z)-axes point in the (lower_right/lower_left/up) direction, respectively.
Parameters: - quat_in ((Nx3) or (Nx4) array) – Quaternion containing the orientation
- win_width (integer) – Pixel-width of the display window.
- win_height (integer) – Pixel-height of the display window.
Examples
>>> in_file = r'. ests\data\data_xsens.txt' >>> from skinematics.sensors.xsens import XSens >>> data = XSens(in_file) >>> viewer = Orientation_OGL(quat_in=data.quat) >>> viewer.run(looping=False, rate=100)
-
class
view.
VarSelector
(selectionWindow, mainApp)[source]¶ Class for the GUI-display of plottable items
Analyze the current workspace for variables that can be plotted, and let the user select one. Variable types that can in principle be plotted are:
- np.ndarray
- pd.core.frame.DataFrame
- pd.core.series.Series
-
view.
orientation
(quats, out_file=None, title_text=None, deltaT=100)[source]¶ Calculates the orienation of an arrow-patch used to visualize a quaternion. Uses “_update_func” for the display.
Parameters: - quats (array [(N,3) or (N,4)]) – Quaterions describing the orientation.
- out_file (string) – Path- and file-name of the animated out-file (“.mp4”). [Default=None]
- title_text (string) – Name of title of animation [Default=None]
- deltaT (int) – interval between frames [msec]. Smaller numbers make faster animations.
Example
To visualize a rotation about the (vertical) z-axis:
>>> # Set the parameters >>> omega = np.r_[0, 10, 10] # [deg/s] >>> duration = 2 >>> rate = 100 >>> q0 = [1, 0, 0, 0] >>> out_file = 'demo_patch.mp4' >>> title_text = 'Rotation Demo' >>> >>> # Calculate the orientation >>> dt = 1./rate >>> num_rep = duration*rate >>> omegas = np.tile(omega, [num_rep, 1]) >>> q = skin.quat.calc_quat(omegas, q0, rate, 'sf') >>> >>> orientation(q, out_file, 'Well done!')
-
view.
ts
(data=None)[source]¶ Show the given time-series data. In addition to the (obvious) GUI-interactions, the following options are available:
- Keyboard interaction:
- f … forward (+ 1/2 frame)
- n … next (+ 1 frame)
- b … back ( -1/2 frame)
- p … previous (-1 frame)
- z … zoom (x-frame = 10% of total length)
- a … all (adjust x- and y-limits)
- x … exit
- Optimized y-scale:
- Often one wants to see data symmetrically about the zero-axis. To facilitate this display, adjusting the “Upper Limit” automatically sets the lower limit to the corresponding negative value.
- Logging:
- When “Log” is activated, right-mouse clicks are indicated with vertical bars, and the corresponding x-values are stored into the users home-directory, in the file “[varName].log”. Since the name of the first value is unknown the first events are stored into “data.log”.
- Load:
Pushing the “Load”-button shows you all the plottable variables in your namespace. Plottable variables are:
- ndarrays
- Pandas DataFrames
- Pandas Series
Examples
To view a single plottable variable:
>>> x = np.random.randn(100,3) >>> view.ts(x)
To select a plottable variable from the workspace>>> x = np.random.randn(100,3) >>> t = np.arange(0,10,0.1) >>> y = np.sin(x) >>> view.ts(locals)
Details¶
- This module includes two functions:
- An interactive viewer for time-series data (“view.ts”)
- An animation of 3D orientations, expressed as quaternions (“view.orientation”)
- For the time-series viewer, variable types that can in principle be plotted are:
- np.ndarray
- pd.core.frame.DataFrame
- pd.core.series.Series
Viewer can be used to inspect a single variable, or to select one from the current workspace.
- Notable aspects:
- Based on Tkinter, to ensure that it runs on all Python installations.
- Resizable window.
- Keyboard-based interaction.
- Logging of marked events.
-
view.
ts
(data=None)[source] Show the given time-series data. In addition to the (obvious) GUI-interactions, the following options are available:
- Keyboard interaction:
- f … forward (+ 1/2 frame)
- n … next (+ 1 frame)
- b … back ( -1/2 frame)
- p … previous (-1 frame)
- z … zoom (x-frame = 10% of total length)
- a … all (adjust x- and y-limits)
- x … exit
- Optimized y-scale:
- Often one wants to see data symmetrically about the zero-axis. To facilitate this display, adjusting the “Upper Limit” automatically sets the lower limit to the corresponding negative value.
- Logging:
- When “Log” is activated, right-mouse clicks are indicated with vertical bars, and the corresponding x-values are stored into the users home-directory, in the file “[varName].log”. Since the name of the first value is unknown the first events are stored into “data.log”.
- Load:
Pushing the “Load”-button shows you all the plottable variables in your namespace. Plottable variables are:
- ndarrays
- Pandas DataFrames
- Pandas Series
Examples
To view a single plottable variable:
>>> x = np.random.randn(100,3) >>> view.ts(x)
To select a plottable variable from the workspace>>> x = np.random.randn(100,3) >>> t = np.arange(0,10,0.1) >>> y = np.sin(x) >>> view.ts(locals)
-
view.
orientation
(quats, out_file=None, title_text=None, deltaT=100)[source] Calculates the orienation of an arrow-patch used to visualize a quaternion. Uses “_update_func” for the display.
Parameters: - quats (array [(N,3) or (N,4)]) – Quaterions describing the orientation.
- out_file (string) – Path- and file-name of the animated out-file (“.mp4”). [Default=None]
- title_text (string) – Name of title of animation [Default=None]
- deltaT (int) – interval between frames [msec]. Smaller numbers make faster animations.
Example
To visualize a rotation about the (vertical) z-axis:
>>> # Set the parameters >>> omega = np.r_[0, 10, 10] # [deg/s] >>> duration = 2 >>> rate = 100 >>> q0 = [1, 0, 0, 0] >>> out_file = 'demo_patch.mp4' >>> title_text = 'Rotation Demo' >>> >>> # Calculate the orientation >>> dt = 1./rate >>> num_rep = duration*rate >>> omegas = np.tile(omega, [num_rep, 1]) >>> q = skin.quat.calc_quat(omegas, q0, rate, 'sf') >>> >>> orientation(q, out_file, 'Well done!')