| 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() | |