Plotting & Visualization¶
Cute Plot provides advanced plotting capabilities designed for high-performance visualization of time-series data with sophisticated downsampling and interactive features.
Plot Architecture¶
Plot Tabs¶
- Multiple plots: Create unlimited separate plot tabs
- Independent settings: Each plot has its own configuration
- Reorderable: Drag tabs to reorder
- Add/Remove: Click "+" to add, right-click to remove tabs
Subplot Grid System¶
Each plot contains a configurable grid of subplots:
┌─────────┬─────────┬─────────┐
│ (0,0) │ (0,1) │ (0,2) │ Row 0
├─────────┼─────────┼─────────┤
│ (1,0) │ (1,1) │ (1,2) │ Row 1
├─────────┼─────────┼─────────┤
│ (2,0) │ (2,1) │ (2,2) │ Row 2
└─────────┴─────────┴─────────┘
Col 0 Col 1 Col 2
Grid Configuration¶
- Rows: 1-3 rows supported
- Columns: 1-3 columns supported
- Dynamic: Grid can be changed at any time
- Content preservation: Existing plots maintained when changing grid size
Adding Series to Plots¶
Drag & Drop from Sidebar¶
- Select series: Choose one or more series in sidebar
- Drag to subplot: Drag any selected series to target subplot
- Automatic addition: All selected series added to the subplot
- Color assignment: Automatic color assignment from predefined palette
Template-Based Addition¶
- Load template: Select template from dropdown
- Drag files: Drag entire files to subplot area
- Pattern matching: Series automatically distributed based on template patterns
Series Legend Controls¶
Each series in a plot has legend controls:
Rename Series¶
- Inline editing: Click the rename field in legend
- Custom names: Override default "Filename - Series" format
- Press Enter: Confirm name change
Delete Series¶
- Delete button: Remove series from subplot
- Immediate action: Series removed without confirmation
- Color rebalancing: Remaining series colors automatically rebalanced
High-Performance Rendering¶
Pyramid Downsampling¶
Cute Plot uses advanced multi-level downsampling for smooth interaction with large datasets:
# Downsampling levels example:
Level 0: 1,000,000 points (original data)
Level 1: 250,000 points (4x downsampled)
Level 2: 62,500 points (16x downsampled)
Level 3: 15,625 points (64x downsampled)
Adaptive Level Selection¶
- Zoom level: Appropriate detail level chosen based on zoom
- Screen pixels: Ensures 4 data points per screen pixel maximum
- Smooth transitions: Seamless switching between detail levels
Downsampling Algorithm¶
Uses MinMaxLTTB (Min-Max Largest Triangle Three Bucket): - Preserves peaks: Important maxima and minima retained - Visual fidelity: Maintains visual characteristics of original data - Performance: Optimized for real-time interaction
Rendering Optimization¶
- Visible range: Only renders data within visible plot range
- Margin buffering: 50-pixel margins for smooth panning
- Parallel processing: Multi-threaded rendering for multiple subplots
- Memory efficient: Minimal memory footprint per series
Interactive Navigation¶
Zoom Operations¶
- Mouse wheel: Zoom in/out at cursor position
- Zoom rectangle: Right-click and drag to zoom to selection
- Fit to data: Double-click to fit all data
- Synchronized: X-axis zoom synchronized across all subplots
Pan Operations¶
- Middle mouse drag: Pan view in any direction
- Axis constraints: Hover over axis to constrain panning
- Smooth panning: Optimized for fluid interaction
Axis Behavior¶
X-Axis Synchronization¶
- Automatic sync: All subplots share the same X-axis range
- Time alignment: Perfect alignment for comparing different measurements
- Zoom propagation: Zoom operations affect all subplots simultaneously
Y-Axis Independence¶
- Independent scaling: Each subplot has independent Y-axis
- Auto-fit: Y-axis automatically fits to visible data range
- Manual control: Can be manually adjusted if needed
Mouse Interactions Summary¶
Left Click: Dismiss popups
Right Click: Context menu / Zoom rectangle
Ctrl+Left Click: Create query rectangle
Middle Drag: Pan view
Mouse Wheel: Zoom in/out
Hover Axis: Lock opposite axis during zoom
Plot Customization¶
Plot Titles and Labels¶
Access via right-click context menu:
Edit Plot Title¶
- Right-click in subplot
- Select Modify Plot Labels → Title
- Enter new title
- Changes apply immediately
Edit Y-Axis Label¶
- Right-click in subplot
- Select Modify Plot Labels → y-axis
- Enter new label
- Changes apply immediately
Series Appearance¶
- Automatic colors: 20 distinct colors in predefined palette
- Color cycling: Colors repeat after 20 series
- Line thickness: Optimized for clarity and performance
- Anti-aliasing: Smooth line rendering
Plot Context Menu¶
Right-click any subplot to access:
Add Annotations Menu¶
- Add horizontal line: Horizontal reference line at cursor Y position
- Add vertical line: Vertical reference line at cursor X position
- Add linked vertical line: Vertical line synchronized across all subplots
- Add draggable text label: Custom text annotation at cursor position
Modify Plot Labels Menu¶
- Title: Edit subplot title
- Y-axis: Edit Y-axis label
Advanced Plotting Features¶
Series Movement Between Subplots¶
- Enable dragging: Hold mouse down on series legend for 200ms
- Drag tooltip: "Moving: Series Name" tooltip appears
- Drop target: Drop on target subplot
- Automatic transfer: Series moves with all transformations preserved
Multi-Series Operations¶
- Batch addition: Multiple selected series added simultaneously
- Parallel processing: Efficient processing of multiple series
- Memory sharing: Shared data structures for memory efficiency
Plot State Management¶
- Zoom state: Each subplot maintains independent zoom state
- Series state: Series transformations and customizations preserved
- Session persistence: Plot configuration maintained during session
Screenshot Functionality¶
Taking Screenshots¶
- Screenshot button: Click "Take Screenshot" in plot controls
- Auto-naming: Screenshots saved with timestamp
- High resolution: Full resolution capture
- Format: PNG format with transparency support
Screenshot Features¶
- Current view: Captures exactly what's visible on screen
- All subplots: Includes entire plot grid
- UI elements: Includes titles, labels, and legends
- File location: Screenshots saved in application directory
Performance Monitoring¶
Real-Time Metrics¶
Available through Settings → Show Metrics: - Frame rate: Current FPS - Memory usage: RAM consumption - Render times: Timing for different operations
Performance Tips¶
- Close unused plots: Remove plots not currently needed
- Limit series count: Avoid too many series in single subplot
- Use templates: Templates optimize series distribution
Best Practices¶
Plot Organization¶
- Logical grouping: Group related measurements in same subplot
- Consistent scaling: Use similar Y-axis ranges for comparison
- Clear labeling: Always label plots and axes descriptively
Performance Optimization¶
- Selective plotting: Plot only necessary series
- Template usage: Use templates for repeated analysis workflows
- Memory monitoring: Monitor memory usage with large datasets
Visual Design¶
- Color harmony: Let automatic coloring maintain visual consistency
- Annotation moderation: Use annotations sparingly for clarity
- Title consistency: Maintain consistent naming conventions
Troubleshooting¶
Common Plotting Issues¶
Series Not Appearing¶
- Check selection: Verify series are selected in sidebar
- Y-axis range: Check if data is outside visible Y range
- Data validity: Ensure series contains valid numeric data
Poor Performance¶
- Reduce series count: Plot fewer series simultaneously
- Close unused plots: Remove unnecessary plot tabs
- System resources: Check available RAM and CPU usage
Zoom/Pan Issues¶
- Reset view: Double-click to fit data
- Check data range: Ensure data exists in expected range
- Axis locks: Verify no axis locks are active
Visual Issues¶
- Refresh display: Click in plot area to refresh
- Window resize: Resize window to trigger redraw
- Graphics drivers: Ensure graphics drivers are up to date
Next Steps¶
Master plotting and visualization, then explore:
1. Data Querying & Analysis
2. Annotations & Markup
3. Data Transformations
Plotting tip: Use right-click zoom for precision zooming and Ctrl+click for data analysis queries