File size: 3,167 Bytes
90d4aa5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import gradio as gr
import pandas as pd

from vega_datasets import data

barley = data.barley()
simple = pd.DataFrame({
    'a': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'],
    'b': [28, 55, 43, 91, 81, 53, 19, 87, 52]
})

def bar_plot_fn(display):
    if display == "simple":
        return gr.BarPlot(
            simple,
            x="a",
            y="b",
            color=None,
            group=None,
            title="Simple Bar Plot with made up data",
            tooltip=['a', 'b'],
            y_lim=[20, 100],
            x_title=None,
            y_title=None,
            vertical=True,
        )
    elif display == "stacked":
        return gr.BarPlot(
            barley,
            x="variety",
            y="yield",
            color="site",
            group=None,
            title="Barley Yield Data",
            tooltip=['variety', 'site'],
            y_lim=None,
            x_title=None,
            y_title=None,
            vertical=True,
        )
    elif display == "grouped":
        return gr.BarPlot(
            barley.astype({"year": str}),
            x="year",
            y="yield",
            color="year",
            group="site",
            title="Barley Yield by Year and Site",
            tooltip=["yield", "site", "year"],
            y_lim=None,
            x_title=None,
            y_title=None,
            vertical=True,
        )
    elif display == "simple-horizontal":
        return gr.BarPlot(
            simple,
            x="a",
            y="b",
            color=None,
            group=None,
            title="Simple Bar Plot with made up data",
            tooltip=['a', 'b'],
            y_lim=[20, 100],
            x_title="Variable A",
            y_title="Variable B",
            vertical=False,
        )
    elif display == "stacked-horizontal":
        return gr.BarPlot(
            barley,
            x="variety",
            y="yield",
            color="site",
            group=None,
            title="Barley Yield Data",
            tooltip=['variety', 'site'],
            y_lim=None,
            x_title=None,
            y_title=None,
            vertical=False,
        )
    elif display == "grouped-horizontal":
        return gr.BarPlot(
            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"],
            y_lim=None,
            x_title=None,
            y_title=None,
            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(show_label=False, show_actions_button=True)
    display.change(bar_plot_fn, inputs=display, outputs=plot)
    bar_plot.load(fn=bar_plot_fn, inputs=display, outputs=plot)