Spaces:
Running
Running
import gradio as gr | |
from vega_datasets import data | |
stocks = data.stocks() | |
gapminder = data.gapminder() | |
gapminder = gapminder.loc[ | |
gapminder.country.isin(["Argentina", "Australia", "Afghanistan"]) | |
] | |
climate = data.climate() | |
seattle_weather = data.seattle_weather() | |
## Or generate your own fake data, here's an example for stocks: | |
# | |
# import pandas as pd | |
# import random | |
# | |
# stocks = pd.DataFrame( | |
# { | |
# "symbol": [ | |
# random.choice( | |
# [ | |
# "MSFT", | |
# "AAPL", | |
# "AMZN", | |
# "IBM", | |
# "GOOG", | |
# ] | |
# ) | |
# for _ in range(120) | |
# ], | |
# "date": [ | |
# pd.Timestamp(year=2000 + i, month=j, day=1) | |
# for i in range(10) | |
# for j in range(1, 13) | |
# ], | |
# "price": [random.randint(10, 200) for _ in range(120)], | |
# } | |
# ) | |
def line_plot_fn(dataset): | |
if dataset == "stocks": | |
return gr.LinePlot( | |
stocks, | |
x="date", | |
y="price", | |
color="symbol", | |
color_legend_position="bottom", | |
title="Stock Prices", | |
tooltip=["date", "price", "symbol"], | |
height=300, | |
width=500, | |
) | |
elif dataset == "climate": | |
return gr.LinePlot( | |
climate, | |
x="DATE", | |
y="HLY-TEMP-NORMAL", | |
y_lim=[250, 500], | |
title="Climate", | |
tooltip=["DATE", "HLY-TEMP-NORMAL"], | |
height=300, | |
width=500, | |
) | |
elif dataset == "seattle_weather": | |
return gr.LinePlot( | |
seattle_weather, | |
x="date", | |
y="temp_min", | |
tooltip=["weather", "date"], | |
overlay_point=True, | |
title="Seattle Weather", | |
height=300, | |
width=500, | |
) | |
elif dataset == "gapminder": | |
return gr.LinePlot( | |
gapminder, | |
x="year", | |
y="life_expect", | |
color="country", | |
title="Life expectancy for countries", | |
stroke_dash="cluster", | |
x_lim=[1950, 2010], | |
tooltip=["country", "life_expect"], | |
stroke_dash_legend_title="Country Cluster", | |
height=300, | |
width=500, | |
) | |
with gr.Blocks() as line_plot: | |
with gr.Row(): | |
with gr.Column(): | |
dataset = gr.Dropdown( | |
choices=["stocks", "climate", "seattle_weather", "gapminder"], | |
value="stocks", | |
) | |
with gr.Column(): | |
plot = gr.LinePlot() | |
dataset.change(line_plot_fn, inputs=dataset, outputs=plot) | |
line_plot.load(fn=line_plot_fn, inputs=dataset, outputs=plot) | |
if __name__ == "__main__": | |
line_plot.launch() | |