|
import gradio as gr |
|
import pandas as pd |
|
import random |
|
|
|
simple = pd.DataFrame( |
|
{ |
|
"a": ["A", "B", "C", "D", "E", "F", "G", "H", "I"], |
|
"b": [28, 55, 43, 91, 81, 53, 19, 87, 52], |
|
} |
|
) |
|
|
|
fake_barley = pd.DataFrame( |
|
{ |
|
"site": [ |
|
random.choice( |
|
[ |
|
"University Farm", |
|
"Waseca", |
|
"Morris", |
|
"Crookston", |
|
"Grand Rapids", |
|
"Duluth", |
|
] |
|
) |
|
for _ in range(120) |
|
], |
|
"yield": [random.randint(25, 75) for _ in range(120)], |
|
"variety": [ |
|
random.choice( |
|
[ |
|
"Manchuria", |
|
"Wisconsin No. 38", |
|
"Glabron", |
|
"No. 457", |
|
"No. 462", |
|
"No. 475", |
|
] |
|
) |
|
for _ in range(120) |
|
], |
|
"year": [ |
|
random.choice( |
|
[ |
|
"1931", |
|
"1932", |
|
] |
|
) |
|
for _ in range(120) |
|
], |
|
} |
|
) |
|
|
|
def bar_plot_fn(display): |
|
if display == "simple": |
|
return gr.BarPlot( |
|
simple, |
|
x="a", |
|
y="b", |
|
title="Simple Bar Plot with made up data", |
|
tooltip=["a", "b"], |
|
y_lim=[20, 100], |
|
) |
|
elif display == "stacked": |
|
return gr.BarPlot( |
|
fake_barley, |
|
x="variety", |
|
y="yield", |
|
color="site", |
|
title="Barley Yield Data", |
|
tooltip=["variety", "site"], |
|
) |
|
elif display == "grouped": |
|
return gr.BarPlot( |
|
fake_barley.astype({"year": str}), |
|
x="year", |
|
y="yield", |
|
color="year", |
|
group="site", |
|
title="Barley Yield by Year and Site", |
|
group_title="", |
|
tooltip=["yield", "site", "year"], |
|
) |
|
elif display == "simple-horizontal": |
|
return gr.BarPlot( |
|
simple, |
|
x="a", |
|
y="b", |
|
x_title="Variable A", |
|
y_title="Variable B", |
|
title="Simple Bar Plot with made up data", |
|
tooltip=["a", "b"], |
|
vertical=False, |
|
y_lim=[20, 100], |
|
) |
|
elif display == "stacked-horizontal": |
|
return gr.BarPlot( |
|
fake_barley, |
|
x="variety", |
|
y="yield", |
|
color="site", |
|
title="Barley Yield Data", |
|
vertical=False, |
|
tooltip=["variety", "site"], |
|
) |
|
elif display == "grouped-horizontal": |
|
return gr.BarPlot( |
|
fake_barley.astype({"year": str}), |
|
x="year", |
|
y="yield", |
|
color="year", |
|
group="site", |
|
title="Barley Yield by Year and Site", |
|
group_title="", |
|
tooltip=["yield", "site", "year"], |
|
vertical=False, |
|
) |
|
|
|
with gr.Blocks() as bar_plot: |
|
with gr.Row(): |
|
with gr.Column(): |
|
display = gr.Dropdown( |
|
choices=[ |
|
"simple", |
|
"stacked", |
|
"grouped", |
|
"simple-horizontal", |
|
"stacked-horizontal", |
|
"grouped-horizontal", |
|
], |
|
value="simple", |
|
label="Type of Bar Plot", |
|
) |
|
with gr.Column(): |
|
plot = gr.BarPlot() |
|
display.change(bar_plot_fn, inputs=display, outputs=plot) |
|
bar_plot.load(fn=bar_plot_fn, inputs=display, outputs=plot) |
|
|
|
bar_plot.launch() |
|
|