Panels¶
Panels are the core visualization components in Zelos. They display your data in various formats, from time-series plots to tables, logs, and single values. Each panel type is optimized for specific use cases.
Panel Types¶
Type | Purpose |
---|---|
Plot | Time-series data |
Table | Current values |
Log | Text log events |
Value | Single metric |
Action | System control |
Panel Management¶
Adding Panels¶
Create new panels to visualize your data:
- Click "+ Add Panel" button at the bottom of the workspace
- Select the desired panel type
- Panel appears in the workspace
Panel Layout¶
Panels automatically arrange themselves in a responsive grid system.
Grid Features¶
- Automatic arrangement - Panels position themselves optimally
- Drag to reorder - Click and drag panel headers
- Resize panels - Drag edges or corners
- Maximize - Double-click header to expand
Panel Controls¶
Each panel includes standard controls in its header:
Control | Function | Action |
---|---|---|
Title Bar | Panel identifier and move handle | Drag to move |
Settings | Configure panel | Click gear icon |
Menu | Additional options | Click ⋮ for menu |
Close | Remove panel | Click × to delete |
In addition, panels contain settings that are unique to the panel type. For example:
Adding Data to Panels¶
Multiple ways to populate panels with signals:
Drag and Drop¶
The primary method for adding signals:
- Locate signal in the sidebar tree
- Drag signal to target panel or empty space
- Release to add
Double-Click¶
- Double-click any signal in the tree
- Automatically creates appropriate panel type
Dragging
You can drag at any layer of the tree. Dragging an event adds all its fields, dragging a source adds all events and fields.
Panel Export Feature¶
Export panel data for external analysis or sharing.
Export Methods¶
Access export from any panel:
- Click the ⋮ menu in panel header
- Select "Export Data"
- Choose format
- File downloads automatically
Export Formats¶
CSV Format¶
Best for spreadsheet analysis:
timestamp,source/event.field1,source/event.field2
1746210309.190321,24.5,1200
1746210309.190324,24.6,1201
1746210309.191392,24.7,1202
Features: - First row contains headers (timestamp + signal names) - Timestamps in Unix format (seconds since epoch) - Empty cells for missing data points - Compatible with Excel, Google Sheets, pandas
Empty Cells
Empty cells indicate no data was recorded for that signal at that timestamp.
JSON Format¶
Best for programmatic processing:
{
"metadata": {
"panel": {
"id": "panel-uuid",
"title": "Panel Name",
"type": "PLOT"
},
"timeRange": {
"start": "2024-01-15T10:30:00.000Z",
"end": "2024-01-15T10:35:00.000Z"
},
"signals": ["signal1", "signal2"],
"exportedAt": "2024-01-15T10:36:00.000Z"
},
"data": {
"timestamps": [1746210309.190321],
"values": {
"signal1": [24.5],
"signal2": [1200]
}
}
}
Features: - Complete metadata (panel info, time range, signals) - Preserves data types and structure - Easy to parse programmatically - Includes export timestamp
Text Format (Logs Only)¶
For log panels:
2024-01-15T10:30:00.123Z [INFO] system: Application started
2024-01-15T10:30:01.456Z [WARN] sensor: Temperature above threshold
2024-01-15T10:30:02.789Z [ERROR] motor: Communication timeout
What Gets Exported¶
- Time Range - Current timeline selection
- Signals - All visible signals in the panel
- Filtering - Applied filters are respected
- Precision - Full precision values (no rounding)
File Naming¶
Files are automatically named with the pattern:
Working with Exported Data¶
Python Example¶
CSV Processing:
import pandas as pd
# Load exported CSV
df = pd.read_csv('panel_export.csv')
# Display basic information
print(f"Time range: {df['timestamp'].min()} to {df['timestamp'].max()}")
print(f"Number of data points: {len(df)}")
# Basic analysis
temp_column = 'vcan0/vehicle_status.temperature'
print(f"Average temperature: {df[temp_column].mean():.2f}°C")
# Find when temperature exceeded a threshold
high_temps = df[df[temp_column] > 25.0]
if not high_temps.empty:
print(f"Temperature exceeded 25°C at {len(high_temps)} timestamps")
JSON Processing:
import json
import pandas as pd
# Load exported JSON
with open('panel_export.json', 'r') as f:
data = json.load(f)
# Extract metadata
print(f"Panel: {data['metadata']['panel']['title']}")
print(f"Signals: {data['metadata']['signals']}")
# Convert to DataFrame
df = pd.DataFrame({
'timestamp': data['data']['timestamps'],
**data['data']['values']
})
# Sample of the DataFrame
print("\nFirst 3 records:")
print(df.head(3))
Panel-Specific Features¶
Plot Panel¶
- Time-series visualization
- Precision measurement tool with delta calculations
- Interactive zooming and panning
- Signal management and color customization
Table Panel¶
- Real-time value updates
- Multi-signal grouping and expansion
- Real-time filtering and sorting
Log Panel¶
- Real-time log streaming
- Multi-level filtering by severity and source
- ANSI color support for terminal formatting
- Advanced search with glob patterns and highlighting
Next Steps¶
-
Time-series visualization
-
Current value monitoring
-
Event analysis
-
Navigate your data