aliabd HF Staff commited on
Commit
881ba49
·
verified ·
1 Parent(s): eeac327

Upload folder using huggingface_hub

Browse files
Files changed (7) hide show
  1. bar_plot_demo.py +66 -100
  2. data.py +20 -0
  3. line_plot_demo.py +59 -72
  4. requirements.txt +2 -2
  5. run.ipynb +1 -1
  6. run.py +7 -7
  7. scatter_plot_demo.py +64 -39
bar_plot_demo.py CHANGED
@@ -1,111 +1,77 @@
1
  import gradio as gr
2
- import pandas as pd
 
3
 
4
- from vega_datasets import data
 
 
 
 
 
 
 
5
 
6
- barley = data.barley()
7
- simple = pd.DataFrame({
8
- 'a': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'],
9
- 'b': [28, 55, 43, 91, 81, 53, 19, 87, 52]
10
- })
 
 
 
 
 
 
11
 
12
- def bar_plot_fn(display):
13
- if display == "simple":
14
- return gr.BarPlot(
15
- simple,
16
- x="a",
17
- y="b",
18
- color=None,
19
- group=None,
20
- title="Simple Bar Plot with made up data",
21
- tooltip=['a', 'b'],
22
- y_lim=[20, 100],
23
- x_title=None,
24
- y_title=None,
25
- vertical=True,
26
- )
27
- elif display == "stacked":
28
- return gr.BarPlot(
29
- barley,
30
- x="variety",
31
- y="yield",
32
- color="site",
33
- group=None,
34
- title="Barley Yield Data",
35
- tooltip=['variety', 'site'],
36
- y_lim=None,
37
- x_title=None,
38
- y_title=None,
39
- vertical=True,
40
- )
41
- elif display == "grouped":
42
- return gr.BarPlot(
43
- barley.astype({"year": str}),
44
- x="year",
45
- y="yield",
46
- color="year",
47
- group="site",
48
- title="Barley Yield by Year and Site",
49
- tooltip=["yield", "site", "year"],
50
- y_lim=None,
51
- x_title=None,
52
- y_title=None,
53
- vertical=True,
54
  )
55
- elif display == "simple-horizontal":
56
- return gr.BarPlot(
57
- simple,
58
- x="a",
59
- y="b",
60
- color=None,
61
- group=None,
62
- title="Simple Bar Plot with made up data",
63
- tooltip=['a', 'b'],
64
- y_lim=[20, 100],
65
- x_title="Variable A",
66
- y_title="Variable B",
67
- vertical=False,
68
  )
69
- elif display == "stacked-horizontal":
70
- return gr.BarPlot(
71
- barley,
72
- x="variety",
73
- y="yield",
74
- color="site",
75
- group=None,
76
- title="Barley Yield Data",
77
- tooltip=['variety', 'site'],
78
- y_lim=None,
79
- x_title=None,
80
- y_title=None,
81
- vertical=False,
82
  )
83
- elif display == "grouped-horizontal":
84
- return gr.BarPlot(
85
- barley.astype({"year": str}),
86
- x="year",
87
- y="yield",
88
- color="year",
89
- group="site",
90
- title="Barley Yield by Year and Site",
91
- group_title="",
92
- tooltip=["yield", "site", "year"],
93
- y_lim=None,
94
- x_title=None,
95
- y_title=None,
96
- vertical=False
97
  )
98
 
99
 
100
- with gr.Blocks() as bar_plot:
101
- display = gr.Dropdown(
102
- choices=["simple", "stacked", "grouped", "simple-horizontal", "stacked-horizontal", "grouped-horizontal"],
103
- value="simple",
104
- label="Type of Bar Plot"
105
- )
106
- plot = gr.BarPlot(show_label=False)
107
- display.change(bar_plot_fn, inputs=display, outputs=plot)
108
- bar_plot.load(fn=bar_plot_fn, inputs=display, outputs=plot)
109
-
110
  if __name__ == "__main__":
111
- bar_plot.launch()
 
1
  import gradio as gr
2
+ import numpy as np
3
+ from data import temp_sensor_data, food_rating_data
4
 
5
+ with gr.Blocks() as bar_plots:
6
+ with gr.Row():
7
+ start = gr.DateTime("2021-01-01 00:00:00", label="Start")
8
+ end = gr.DateTime("2021-01-05 00:00:00", label="End")
9
+ apply_btn = gr.Button("Apply", scale=0)
10
+ with gr.Row():
11
+ group_by = gr.Radio(["None", "30m", "1h", "4h", "1d"], value="None", label="Group by")
12
+ aggregate = gr.Radio(["sum", "mean", "median", "min", "max"], value="sum", label="Aggregation")
13
 
14
+ temp_by_time = gr.BarPlot(
15
+ temp_sensor_data,
16
+ x="time",
17
+ y="temperature",
18
+ )
19
+ temp_by_time_location = gr.BarPlot(
20
+ temp_sensor_data,
21
+ x="time",
22
+ y="temperature",
23
+ color="location",
24
+ )
25
 
26
+ time_graphs = [temp_by_time, temp_by_time_location]
27
+ group_by.change(
28
+ lambda group: [gr.BarPlot(x_bin=None if group == "None" else group)] * len(time_graphs),
29
+ group_by,
30
+ time_graphs
31
+ )
32
+ aggregate.change(
33
+ lambda aggregate: [gr.BarPlot(y_aggregate=aggregate)] * len(time_graphs),
34
+ aggregate,
35
+ time_graphs
36
+ )
37
+
38
+
39
+ def rescale(select: gr.SelectData):
40
+ return select.index
41
+ rescale_evt = gr.on([plot.select for plot in time_graphs], rescale, None, [start, end])
42
+
43
+ for trigger in [apply_btn.click, rescale_evt.then]:
44
+ trigger(
45
+ lambda start, end: [gr.BarPlot(x_lim=[start, end])] * len(time_graphs), [start, end], time_graphs
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  )
47
+
48
+ with gr.Row():
49
+ price_by_cuisine = gr.BarPlot(
50
+ food_rating_data,
51
+ x="cuisine",
52
+ y="price",
 
 
 
 
 
 
 
53
  )
54
+ with gr.Column(scale=0):
55
+ gr.Button("Sort $ > $$$").click(lambda: gr.BarPlot(sort="y"), None, price_by_cuisine)
56
+ gr.Button("Sort $$$ > $").click(lambda: gr.BarPlot(sort="-y"), None, price_by_cuisine)
57
+ gr.Button("Sort A > Z").click(lambda: gr.BarPlot(sort=["Chinese", "Italian", "Mexican"]), None, price_by_cuisine)
58
+
59
+ with gr.Row():
60
+ price_by_rating = gr.BarPlot(
61
+ food_rating_data,
62
+ x="rating",
63
+ y="price",
64
+ x_bin=1,
 
 
65
  )
66
+ price_by_rating_color = gr.BarPlot(
67
+ food_rating_data,
68
+ x="rating",
69
+ y="price",
70
+ color="cuisine",
71
+ x_bin=1,
72
+ color_map={"Italian": "red", "Mexican": "green", "Chinese": "blue"},
 
 
 
 
 
 
 
73
  )
74
 
75
 
 
 
 
 
 
 
 
 
 
 
76
  if __name__ == "__main__":
77
+ bar_plots.launch()
data.py ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ from random import randint, choice, random
3
+
4
+ temp_sensor_data = pd.DataFrame(
5
+ {
6
+ "time": pd.date_range("2021-01-01", end="2021-01-05", periods=200),
7
+ "temperature": [randint(50 + 10 * (i % 2), 65 + 15 * (i % 2)) for i in range(200)],
8
+ "humidity": [randint(50 + 10 * (i % 2), 65 + 15 * (i % 2)) for i in range(200)],
9
+ "location": ["indoor", "outdoor"] * 100,
10
+ }
11
+ )
12
+
13
+ food_rating_data = pd.DataFrame(
14
+ {
15
+ "cuisine": [["Italian", "Mexican", "Chinese"][i % 3] for i in range(100)],
16
+ "rating": [random() * 4 + 0.5 * (i % 3) for i in range(100)],
17
+ "price": [randint(10, 50) + 4 * (i % 3) for i in range(100)],
18
+ "wait": [random() for i in range(100)],
19
+ }
20
+ )
line_plot_demo.py CHANGED
@@ -1,82 +1,69 @@
1
  import gradio as gr
2
- from vega_datasets import data
 
3
 
4
- stocks = data.stocks()
5
- gapminder = data.gapminder()
6
- gapminder = gapminder.loc[
7
- gapminder.country.isin(["Argentina", "Australia", "Afghanistan"])
8
- ]
9
- climate = data.climate()
10
- seattle_weather = data.seattle_weather()
 
11
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
 
13
- def line_plot_fn(dataset):
14
- if dataset == "stocks":
15
- return gr.LinePlot(
16
- stocks,
17
- x="date",
18
- y="price",
19
- color="symbol",
20
- x_lim=None,
21
- y_lim=None,
22
- stroke_dash=None,
23
- tooltip=['date', 'price', 'symbol'],
24
- overlay_point=False,
25
- title="Stock Prices",
26
- stroke_dash_legend_title=None,
27
- )
28
- elif dataset == "climate":
29
- return gr.LinePlot(
30
- climate,
31
- x="DATE",
32
- y="HLY-TEMP-NORMAL",
33
- color=None,
34
- x_lim=None,
35
- y_lim=[250, 500],
36
- stroke_dash=None,
37
- tooltip=['DATE', 'HLY-TEMP-NORMAL'],
38
- overlay_point=False,
39
- title="Climate",
40
- stroke_dash_legend_title=None,
41
- )
42
- elif dataset == "seattle_weather":
43
- return gr.LinePlot(
44
- seattle_weather,
45
- x="date",
46
- y="temp_min",
47
- color=None,
48
- x_lim=None,
49
- y_lim=None,
50
- stroke_dash=None,
51
- tooltip=["weather", "date"],
52
- overlay_point=True,
53
- title="Seattle Weather",
54
- stroke_dash_legend_title=None,
55
- )
56
- elif dataset == "gapminder":
57
- return gr.LinePlot(
58
- gapminder,
59
- x="year",
60
- y="life_expect",
61
- color="country",
62
- x_lim=[1950, 2010],
63
- y_lim=None,
64
- stroke_dash="cluster",
65
- tooltip=['country', 'life_expect'],
66
- overlay_point=False,
67
- title="Life expectancy for countries",
68
- )
69
 
 
 
 
 
 
 
 
 
70
 
71
- with gr.Blocks() as line_plot:
72
- dataset = gr.Dropdown(
73
- choices=["stocks", "climate", "seattle_weather", "gapminder"],
74
- value="stocks",
75
  )
76
- plot = gr.LinePlot()
77
- dataset.change(line_plot_fn, inputs=dataset, outputs=plot)
78
- line_plot.load(fn=line_plot_fn, inputs=dataset, outputs=plot)
 
 
 
 
 
 
 
 
 
 
79
 
80
 
81
  if __name__ == "__main__":
82
- line_plot.launch()
 
1
  import gradio as gr
2
+ import numpy as np
3
+ from data import temp_sensor_data, food_rating_data
4
 
5
+ with gr.Blocks() as line_plots:
6
+ with gr.Row():
7
+ start = gr.DateTime("2021-01-01 00:00:00", label="Start")
8
+ end = gr.DateTime("2021-01-05 00:00:00", label="End")
9
+ apply_btn = gr.Button("Apply", scale=0)
10
+ with gr.Row():
11
+ group_by = gr.Radio(["None", "30m", "1h", "4h", "1d"], value="None", label="Group by")
12
+ aggregate = gr.Radio(["sum", "mean", "median", "min", "max"], value="sum", label="Aggregation")
13
 
14
+ temp_by_time = gr.LinePlot(
15
+ temp_sensor_data,
16
+ x="time",
17
+ y="temperature",
18
+ )
19
+ temp_by_time_location = gr.LinePlot(
20
+ temp_sensor_data,
21
+ x="time",
22
+ y="temperature",
23
+ color="location",
24
+ )
25
+
26
+ time_graphs = [temp_by_time, temp_by_time_location]
27
+ group_by.change(
28
+ lambda group: [gr.LinePlot(x_bin=None if group == "None" else group)] * len(time_graphs),
29
+ group_by,
30
+ time_graphs
31
+ )
32
+ aggregate.change(
33
+ lambda aggregate: [gr.LinePlot(y_aggregate=aggregate)] * len(time_graphs),
34
+ aggregate,
35
+ time_graphs
36
+ )
37
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
 
39
+ def rescale(select: gr.SelectData):
40
+ return select.index
41
+ rescale_evt = gr.on([plot.select for plot in time_graphs], rescale, None, [start, end])
42
+
43
+ for trigger in [apply_btn.click, rescale_evt.then]:
44
+ trigger(
45
+ lambda start, end: [gr.LinePlot(x_lim=[start, end])] * len(time_graphs), [start, end], time_graphs
46
+ )
47
 
48
+ price_by_cuisine = gr.LinePlot(
49
+ food_rating_data,
50
+ x="cuisine",
51
+ y="price",
52
  )
53
+ with gr.Row():
54
+ price_by_rating = gr.LinePlot(
55
+ food_rating_data,
56
+ x="rating",
57
+ y="price",
58
+ )
59
+ price_by_rating_color = gr.LinePlot(
60
+ food_rating_data,
61
+ x="rating",
62
+ y="price",
63
+ color="cuisine",
64
+ color_map={"Italian": "red", "Mexican": "green", "Chinese": "blue"},
65
+ )
66
 
67
 
68
  if __name__ == "__main__":
69
+ line_plots.launch()
requirements.txt CHANGED
@@ -1,3 +1,3 @@
1
- gradio-client @ git+https://github.com/gradio-app/gradio@38c2ad425a905431b1eb17b9498669f9e49f0dd5#subdirectory=client/python
2
- https://gradio-builds.s3.amazonaws.com/38c2ad425a905431b1eb17b9498669f9e49f0dd5/gradio-4.38.1-py3-none-any.whl
3
  vega_datasets
 
1
+ gradio-client @ git+https://github.com/gradio-app/gradio@76c175935019833baef709a5cf401d2263ca72ee#subdirectory=client/python
2
+ https://gradio-builds.s3.amazonaws.com/76c175935019833baef709a5cf401d2263ca72ee/gradio-4.38.1-py3-none-any.whl
3
  vega_datasets
run.ipynb CHANGED
@@ -1 +1 @@
1
- {"cells": [{"cell_type": "markdown", "id": "302934307671667531413257853548643485645", "metadata": {}, "source": ["# Gradio Demo: native_plots"]}, {"cell_type": "code", "execution_count": null, "id": "272996653310673477252411125948039410165", "metadata": {}, "outputs": [], "source": ["!pip install -q gradio vega_datasets"]}, {"cell_type": "code", "execution_count": null, "id": "288918539441861185822528903084949547379", "metadata": {}, "outputs": [], "source": ["# Downloading files from the demo repo\n", "import os\n", "!wget -q https://github.com/gradio-app/gradio/raw/main/demo/native_plots/bar_plot_demo.py\n", "!wget -q https://github.com/gradio-app/gradio/raw/main/demo/native_plots/line_plot_demo.py\n", "!wget -q https://github.com/gradio-app/gradio/raw/main/demo/native_plots/scatter_plot_demo.py"]}, {"cell_type": "code", "execution_count": null, "id": "44380577570523278879349135829904343037", "metadata": {}, "outputs": [], "source": ["import gradio as gr\n", "\n", "from scatter_plot_demo import scatter_plot\n", "from line_plot_demo import line_plot\n", "from bar_plot_demo import bar_plot\n", "\n", "\n", "with gr.Blocks() as demo:\n", " with gr.Tabs():\n", " with gr.TabItem(\"Scatter Plot\"):\n", " scatter_plot.render()\n", " with gr.TabItem(\"Line Plot\"):\n", " line_plot.render()\n", " with gr.TabItem(\"Bar Plot\"):\n", " bar_plot.render()\n", "\n", "if __name__ == \"__main__\":\n", " demo.launch()\n"]}], "metadata": {}, "nbformat": 4, "nbformat_minor": 5}
 
1
+ {"cells": [{"cell_type": "markdown", "id": "302934307671667531413257853548643485645", "metadata": {}, "source": ["# Gradio Demo: native_plots"]}, {"cell_type": "code", "execution_count": null, "id": "272996653310673477252411125948039410165", "metadata": {}, "outputs": [], "source": ["!pip install -q gradio vega_datasets"]}, {"cell_type": "code", "execution_count": null, "id": "288918539441861185822528903084949547379", "metadata": {}, "outputs": [], "source": ["# Downloading files from the demo repo\n", "import os\n", "!wget -q https://github.com/gradio-app/gradio/raw/main/demo/native_plots/bar_plot_demo.py\n", "!wget -q https://github.com/gradio-app/gradio/raw/main/demo/native_plots/data.py\n", "!wget -q https://github.com/gradio-app/gradio/raw/main/demo/native_plots/line_plot_demo.py\n", "!wget -q https://github.com/gradio-app/gradio/raw/main/demo/native_plots/scatter_plot_demo.py"]}, {"cell_type": "code", "execution_count": null, "id": "44380577570523278879349135829904343037", "metadata": {}, "outputs": [], "source": ["import gradio as gr\n", "\n", "from scatter_plot_demo import scatter_plots\n", "from line_plot_demo import line_plots\n", "from bar_plot_demo import bar_plots\n", "\n", "\n", "with gr.Blocks() as demo:\n", " with gr.Tabs():\n", " with gr.TabItem(\"Line Plot\"):\n", " line_plots.render()\n", " with gr.TabItem(\"Scatter Plot\"):\n", " scatter_plots.render()\n", " with gr.TabItem(\"Bar Plot\"):\n", " bar_plots.render()\n", "\n", "if __name__ == \"__main__\":\n", " demo.launch()\n"]}], "metadata": {}, "nbformat": 4, "nbformat_minor": 5}
run.py CHANGED
@@ -1,18 +1,18 @@
1
  import gradio as gr
2
 
3
- from scatter_plot_demo import scatter_plot
4
- from line_plot_demo import line_plot
5
- from bar_plot_demo import bar_plot
6
 
7
 
8
  with gr.Blocks() as demo:
9
  with gr.Tabs():
10
- with gr.TabItem("Scatter Plot"):
11
- scatter_plot.render()
12
  with gr.TabItem("Line Plot"):
13
- line_plot.render()
 
 
14
  with gr.TabItem("Bar Plot"):
15
- bar_plot.render()
16
 
17
  if __name__ == "__main__":
18
  demo.launch()
 
1
  import gradio as gr
2
 
3
+ from scatter_plot_demo import scatter_plots
4
+ from line_plot_demo import line_plots
5
+ from bar_plot_demo import bar_plots
6
 
7
 
8
  with gr.Blocks() as demo:
9
  with gr.Tabs():
 
 
10
  with gr.TabItem("Line Plot"):
11
+ line_plots.render()
12
+ with gr.TabItem("Scatter Plot"):
13
+ scatter_plots.render()
14
  with gr.TabItem("Bar Plot"):
15
+ bar_plots.render()
16
 
17
  if __name__ == "__main__":
18
  demo.launch()
scatter_plot_demo.py CHANGED
@@ -1,46 +1,71 @@
1
  import gradio as gr
 
 
2
 
3
- from vega_datasets import data
4
-
5
- cars = data.cars()
6
- iris = data.iris()
7
-
8
-
9
- def scatter_plot_fn(dataset):
10
- if dataset == "iris":
11
- return gr.ScatterPlot(
12
- value=iris,
13
- x="petalWidth",
14
- y="petalLength",
15
- color=None,
16
- title="Iris Dataset",
17
- x_title="Petal Width",
18
- y_title="Petal Length",
19
- tooltip=["petalWidth", "petalLength", "species"],
20
- caption="",
21
- height=600,
22
- width=600,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  )
24
- else:
25
- return gr.ScatterPlot(
26
- value=cars,
27
- x="Horsepower",
28
- y="Miles_per_Gallon",
29
- color="Origin",
30
- tooltip="Name",
31
- title="Car Data",
32
- y_title="Miles per Gallon",
33
- caption="MPG vs Horsepower of various cars",
34
- height=None,
35
- width=None,
36
  )
37
 
38
 
39
- with gr.Blocks() as scatter_plot:
40
- dataset = gr.Dropdown(choices=["cars", "iris"], value="cars")
41
- plot = gr.ScatterPlot(show_label=False)
42
- dataset.change(scatter_plot_fn, inputs=dataset, outputs=plot)
43
- scatter_plot.load(fn=scatter_plot_fn, inputs=dataset, outputs=plot)
44
-
45
  if __name__ == "__main__":
46
- scatter_plot.launch()
 
1
  import gradio as gr
2
+ import numpy as np
3
+ from data import temp_sensor_data, food_rating_data
4
 
5
+ with gr.Blocks() as scatter_plots:
6
+ with gr.Row():
7
+ start = gr.DateTime("2021-01-01 00:00:00", label="Start")
8
+ end = gr.DateTime("2021-01-05 00:00:00", label="End")
9
+ apply_btn = gr.Button("Apply", scale=0)
10
+ with gr.Row():
11
+ group_by = gr.Radio(["None", "30m", "1h", "4h", "1d"], value="None", label="Group by")
12
+ aggregate = gr.Radio(["sum", "mean", "median", "min", "max"], value="sum", label="Aggregation")
13
+
14
+ temp_by_time = gr.ScatterPlot(
15
+ temp_sensor_data,
16
+ x="time",
17
+ y="temperature",
18
+ )
19
+ temp_by_time_location = gr.ScatterPlot(
20
+ temp_sensor_data,
21
+ x="time",
22
+ y="temperature",
23
+ color="location",
24
+ )
25
+
26
+ time_graphs = [temp_by_time, temp_by_time_location]
27
+ group_by.change(
28
+ lambda group: [gr.ScatterPlot(x_bin=None if group == "None" else group)] * len(time_graphs),
29
+ group_by,
30
+ time_graphs
31
+ )
32
+ aggregate.change(
33
+ lambda aggregate: [gr.ScatterPlot(y_aggregate=aggregate)] * len(time_graphs),
34
+ aggregate,
35
+ time_graphs
36
+ )
37
+
38
+
39
+ # def rescale(select: gr.SelectData):
40
+ # return select.index
41
+ # rescale_evt = gr.on([plot.select for plot in time_graphs], rescale, None, [start, end])
42
+
43
+ # for trigger in [apply_btn.click, rescale_evt.then]:
44
+ # trigger(
45
+ # lambda start, end: [gr.ScatterPlot(x_lim=[start, end])] * len(time_graphs), [start, end], time_graphs
46
+ # )
47
+
48
+ price_by_cuisine = gr.ScatterPlot(
49
+ food_rating_data,
50
+ x="cuisine",
51
+ y="price",
52
+ )
53
+ with gr.Row():
54
+ price_by_rating = gr.ScatterPlot(
55
+ food_rating_data,
56
+ x="rating",
57
+ y="price",
58
+ color="wait",
59
+ show_actions_button=True,
60
  )
61
+ price_by_rating_color = gr.ScatterPlot(
62
+ food_rating_data,
63
+ x="rating",
64
+ y="price",
65
+ color="cuisine",
66
+ # color_map={"Italian": "red", "Mexican": "green", "Chinese": "blue"},
 
 
 
 
 
 
67
  )
68
 
69
 
 
 
 
 
 
 
70
  if __name__ == "__main__":
71
+ scatter_plots.launch()