Skip to content

Commit 8be90f7

Browse files
Mike ProsserMike Prosser
authored andcommitted
add numeric and enum inputs to the simple graph example
1 parent d1713f8 commit 8be90f7

File tree

3 files changed

+41
-16
lines changed

3 files changed

+41
-16
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
"""Enumeration for amplitude values used in the simple graph example."""
2+
3+
import enum
4+
5+
6+
class AmplitudeEnum(enum.IntEnum):
7+
"""Enumeration for amplitude values."""
8+
9+
SMALL = 1
10+
MEDIUM = 5
11+
BIG = 10

examples/simple_graph/simple_graph.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,14 @@
55
from pathlib import Path
66

77
import numpy as np
8+
from amplitude_enum import AmplitudeEnum
89

910
import nipanel
1011

1112

1213
panel_script_path = Path(__file__).with_name("simple_graph_panel.py")
1314
panel = nipanel.create_panel(panel_script_path)
1415

15-
amplitude = 1.0
16-
frequency = 1.0
1716
num_points = 100
1817

1918
try:
@@ -22,16 +21,19 @@
2221

2322
# Generate and update the sine wave data periodically
2423
while True:
24+
amplitude_enum = AmplitudeEnum(panel.get_value("amplitude_enum", AmplitudeEnum.SMALL.value))
25+
base_frequency = panel.get_value("base_frequency", 1.0)
26+
27+
# Slowly vary the total frequency for a more dynamic visualization
28+
frequency = base_frequency + 0.5 * math.sin(time.time() / 5.0)
29+
2530
time_points = np.linspace(0, num_points, num_points)
26-
sine_values = amplitude * np.sin(frequency * time_points)
31+
sine_values = amplitude_enum.value * np.sin(frequency * time_points)
2732

33+
panel.set_value("frequency", frequency)
2834
panel.set_value("time_points", time_points.tolist())
2935
panel.set_value("sine_values", sine_values.tolist())
30-
panel.set_value("amplitude", amplitude)
31-
panel.set_value("frequency", frequency)
3236

33-
# Slowly vary the frequency for a more dynamic visualization
34-
frequency = 1.0 + 0.5 * math.sin(time.time() / 5.0)
3537
time.sleep(0.1)
3638

3739
except KeyboardInterrupt:

examples/simple_graph/simple_graph_panel.py

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,42 @@
11
"""A Streamlit visualization panel for the simple_graph.py example script."""
22

33
import streamlit as st
4+
from amplitude_enum import AmplitudeEnum
45
from streamlit_echarts import st_echarts
56

67
import nipanel
78

89

910
st.set_page_config(page_title="Simple Graph Example", page_icon="📈", layout="wide")
1011
st.title("Simple Graph Example")
12+
col1, col2, col3, col4, col5, col6 = st.columns(6)
1113

1214
panel = nipanel.get_panel_accessor()
13-
time_points = panel.get_value("time_points", [0.0])
14-
sine_values = panel.get_value("sine_values", [0.0])
15-
amplitude = panel.get_value("amplitude", 1.0)
16-
frequency = panel.get_value("frequency", 1.0)
1715

18-
col1, col2, col3, col4, col5 = st.columns(5)
1916
with col1:
20-
st.metric("Amplitude", f"{amplitude:.2f}")
17+
amplitude_tuple = st.selectbox(
18+
"Amplitude",
19+
options=[(e.name, e.value) for e in AmplitudeEnum],
20+
format_func=lambda x: x[0],
21+
index=0,
22+
)
23+
amplitude_enum = AmplitudeEnum[amplitude_tuple[0]]
24+
panel.set_value("amplitude_enum", amplitude_enum)
2125
with col2:
22-
st.metric("Frequency", f"{frequency:.2f} Hz")
26+
base_frequency = st.number_input("Base Frequency", value=1.0, step=0.1)
27+
panel.set_value("base_frequency", base_frequency)
28+
2329
with col3:
24-
st.metric("Min Value", f"{min(sine_values):.3f}")
30+
frequency = panel.get_value("frequency", 0.0)
31+
st.metric("Frequency", f"{frequency:.2f} Hz")
32+
33+
time_points = panel.get_value("time_points", [0.0])
34+
sine_values = panel.get_value("sine_values", [0.0])
2535
with col4:
26-
st.metric("Max Value", f"{max(sine_values):.3f}")
36+
st.metric("Min Value", f"{min(sine_values):.3f}")
2737
with col5:
38+
st.metric("Max Value", f"{max(sine_values):.3f}")
39+
with col6:
2840
st.metric("Data Points", len(sine_values))
2941

3042
# Prepare data for echarts

0 commit comments

Comments
 (0)