Spaces:
Running
Running
import math | |
import pandas as pd | |
import gradio as gr | |
import datetime | |
import numpy as np | |
def get_time(): | |
return datetime.datetime.now() | |
plot_end = 2 * math.pi | |
def get_plot(period=1): | |
global plot_end | |
x = np.arange(plot_end - 2 * math.pi, plot_end, 0.02) | |
y = np.sin(2 * math.pi * period * x) | |
update = gr.LinePlot( | |
value=pd.DataFrame({"x": x, "y": y}), | |
x="x", | |
y="y", | |
title="Plot (updates every second)", | |
width=600, | |
height=350, | |
) | |
plot_end += 0.1 | |
return update | |
with gr.Blocks() as demo: | |
with gr.Row(): | |
with gr.Column(): | |
c_time2 = gr.Textbox(label="Current Time refreshed every second") | |
period = gr.Slider( | |
label="Period of plot", value=1, minimum=0, maximum=10 | |
) | |
plot = gr.LinePlot(show_label=False) | |
with gr.Column(): | |
start_time = gr.Textbox(label="Start Time") | |
end_time = gr.Textbox(label="End Time") | |
timer = gr.Timer(1) | |
timer.tick(lambda: datetime.datetime.now(), None, c_time2) | |
timer.tick(get_plot, period, plot) | |
def select(selection_range: gr.SelectData): | |
return gr.LinePlot(x_lim=selection_range.index), selection_range.index[0], selection_range.index[1] | |
plot.select(select, None, [plot, start_time, end_time]) | |
plot.double_click(lambda: gr.LinePlot(x_lim=None), None, plot) | |
if __name__ == "__main__": | |
demo.launch() | |