-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathvizro.py
More file actions
68 lines (59 loc) · 2.4 KB
/
vizro.py
File metadata and controls
68 lines (59 loc) · 2.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import vizro
from spark import load_data_from_hdfs, transform_data
import vizro.models as vm
# Filters for user input
year_filter = vm.Filter(column="Year", selector=vm.Dropdown(options=[2022, 2023, 2024]))
driver_filter = vm.Filter(column="Driver", selector=vm.Dropdown(options=[
"VER", "LEC", "NOR", "PIA", "SAI", "HAM", "RUS", "PER", "ALO", "HUL",
"STR", "TSU", "ALB", "RIC", "GAS", "MAG", "OCO", "ZHO", "SAR", "BOT"
]))
track_filter = vm.Filter(column="Track", selector=vm.Dropdown(options=[
"Italian Grand Prix", "Australian Grand Prix", "British Grand Prix"
]))
session_filter = vm.Filter(column="Session", selector=vm.Dropdown(options=[
"FP1", "FP2", "FP3", "Qualifying", "Race"
]))
# Dashboard layout
dashboard = vm.Page(
title="F1 Telemetry Dashboard",
components=[
year_filter,
driver_filter,
track_filter,
session_filter,
# Add visualization components here (e.g., charts)
],
)
# Function to update data based on selections
def update_data():
try:
selected_year = year_filter.value
selected_driver = driver_filter.value
selected_track = track_filter.value
selected_session = session_filter.value
# Load data based on user selections
df = load_data_from_hdfs(selected_year, selected_track, selected_session)
transformed_data = transform_data(df, selected_driver)
# need to put some telemetric data code here
# Load data based on user selections
df = load_data_from_hdfs(selected_year, selected_track, selected_session)
if df is not None and not df.isEmpty():
transformed_data = transform_data(df, selected_driver)
# Update visualizations here with transformed_data
if transformed_data is not None:
print(f"Updating visualizations for {selected_driver} in {selected_year} {selected_session}")
# Code to update visualizations goes here
else:
print("No data after transformation.")
else:
print("No data loaded.")
except Exception as e:
print(f"Error updating data: {e}")
# Set up event listeners to call update_data() when selections change
year_filter.on_change(update_data)
driver_filter.on_change(update_data)
track_filter.on_change(update_data)
session_filter.on_change(update_data)
# Launch the dashboard
def run_dashboard():
vizro.run(dashboard)