diff --git a/README.md b/README.md index b07eba89a3..d071d9c05b 100644 --- a/README.md +++ b/README.md @@ -128,7 +128,17 @@ import taipy as tp import pandas as pd from taipy import Config, Scope, Gui -# Taipy Scenario & Data Management +# Defining the helper functions + +# Callback definition - submits scenario with genre selection +def on_genre_selected(state): + scenario.selected_genre_node.write(state.selected_genre) + tp.submit(scenario) + state.df = scenario.filtered_data.read() + +## Set initial value to Action +def on_init(state): + on_genre_selected(state) # Filtering function - task def filter_genre(initial_dataset: pd.DataFrame, selected_genre): @@ -136,42 +146,35 @@ def filter_genre(initial_dataset: pd.DataFrame, selected_genre): filtered_data = filtered_dataset.nlargest(7, "Popularity %") return filtered_data -# Load the configuration made with Taipy Studio -Config.load("config.toml") -scenario_cfg = Config.scenarios["scenario"] +# The main script +if __name__ == "__main__": + # Taipy Scenario & Data Management -# Start Taipy Core service -tp.Core().run() + # Load the configuration made with Taipy Studio + Config.load("config.toml") + scenario_cfg = Config.scenarios["scenario"] -# Create a scenario -scenario = tp.create_scenario(scenario_cfg) + # Start Taipy Core service + tp.Core().run() + # Create a scenario + scenario = tp.create_scenario(scenario_cfg) -# Taipy User Interface -# Let's add a GUI to our Scenario Management for a full application + # Taipy User Interface + # Let's add a GUI to our Scenario Management for a full application -# Callback definition - submits scenario with genre selection -def on_genre_selected(state): - scenario.selected_genre_node.write(state.selected_genre) - tp.submit(scenario) - state.df = scenario.filtered_data.read() - -# Get list of genres -genres = [ - "Action", "Adventure", "Animation", "Children", "Comedy", "Fantasy", "IMAX" - "Romance","Sci-FI", "Western", "Crime", "Mystery", "Drama", "Horror", "Thriller", "Film-Noir","War", "Musical", "Documentary" + # Get list of genres + genres = [ + "Action", "Adventure", "Animation", "Children", "Comedy", "Fantasy", "IMAX" + "Romance","Sci-FI", "Western", "Crime", "Mystery", "Drama", "Horror", "Thriller", "Film-Noir","War", "Musical", "Documentary" ] -# Initialization of variables -df = pd.DataFrame(columns=["Title", "Popularity %"]) -selected_genre = "Action" - -## Set initial value to Action -def on_init(state): - on_genre_selected(state) + # Initialization of variables + df = pd.DataFrame(columns=["Title", "Popularity %"]) + selected_genre = "Action" -# User interface definition -my_page = """ + # User interface definition + my_page = """ # Film recommendation ## Choose your favorite genre @@ -179,9 +182,9 @@ my_page = """ ## Here are the top seven picks by popularity <|{df}|chart|x=Title|y=Popularity %|type=bar|title=Film Popularity|> -""" + """ -Gui(page=my_page).run() + Gui(page=my_page).run() ``` And the final result: diff --git a/doc/gui/examples/broadcast.py b/doc/gui/examples/broadcast.py index 32e8702a0e..71906cad3e 100644 --- a/doc/gui/examples/broadcast.py +++ b/doc/gui/examples/broadcast.py @@ -31,10 +31,6 @@ thread = None thread_event = Event() -button_texts = ["Start", "Stop"] -# Text in the start/stop button (initially "Start") -button_text = button_texts[0] - def count(event, gui): while not event.is_set(): @@ -58,15 +54,21 @@ def start_or_stop(state: State): state.assign("button_text", button_texts[1 if thread else 0]) -page = """# Broadcasting values +if __name__ == "__main__": + button_texts = ["Start", "Stop"] + # Text in the start/stop button (initially "Start") + button_text = button_texts[0] + + page = """ +# Broadcasting values Counter: <|{counter}|> Timer: <|{button_text}|button|on_action=start_or_stop|> -""" + """ -# Declare "button_text" as a shared variable. -# Assigning a value to a state's 'button_text' property is propagated to all clients -Gui.add_shared_variable("button_text") + # Declare "button_text" as a shared variable. + # Assigning a value to a state's 'button_text' property is propagated to all clients + Gui.add_shared_variable("button_text") -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/broadcast_callback.py b/doc/gui/examples/broadcast_callback.py index 83ca6a1721..ef9aab481d 100644 --- a/doc/gui/examples/broadcast_callback.py +++ b/doc/gui/examples/broadcast_callback.py @@ -23,9 +23,6 @@ from taipy.gui import Gui -current_time = datetime.now() -update = False - # Update the 'current_time' state variable if 'update' is True def update_state(state, updated_time): @@ -41,17 +38,21 @@ def update_time(gui): sleep(1) -page = """ +if __name__ == "__main__": + current_time = datetime.now() + update = False + + page = """ Current time is: <|{current_time}|format=HH:mm:ss|> Update: <|{update}|toggle|> -""" + """ -gui = Gui(page) + gui = Gui(page) -# Run thread that regularly updates the current time -thread = Thread(target=update_time, args=[gui], name="clock") -thread.daemon = True -thread.start() + # Run thread that regularly updates the current time + thread = Thread(target=update_time, args=[gui], name="clock") + thread.daemon = True + thread.start() -gui.run() + gui.run() diff --git a/doc/gui/examples/broadcast_change.py b/doc/gui/examples/broadcast_change.py index ac92f1a2bb..56c70e3f2c 100644 --- a/doc/gui/examples/broadcast_change.py +++ b/doc/gui/examples/broadcast_change.py @@ -23,8 +23,6 @@ from taipy.gui import Gui -current_time = datetime.now() - # The function that executes in its own thread. # Update the current time every second. @@ -34,15 +32,18 @@ def update_time(gui): sleep(1) -page = """ +if __name__ == "__main__": + current_time = datetime.now() + + page = """ Current time is: <|{current_time}|format=HH:mm:ss|> -""" + """ -gui = Gui(page) + gui = Gui(page) -# Run thread that regularly updates the current time -thread = Thread(target=update_time, args=[gui], name="clock") -thread.daemon = True -thread.start() + # Run thread that regularly updates the current time + thread = Thread(target=update_time, args=[gui], name="clock") + thread.daemon = True + thread.start() -gui.run() + gui.run() diff --git a/doc/gui/examples/charts/advanced-annotations.py b/doc/gui/examples/charts/advanced-annotations.py index 75c914b3b9..645449ae16 100644 --- a/doc/gui/examples/charts/advanced-annotations.py +++ b/doc/gui/examples/charts/advanced-annotations.py @@ -21,31 +21,31 @@ def f(x): return x * x * x / 3 - x -# x values: [-2.2, ..., 2.2] -x = [(x - 10) / 4.5 for x in range(0, 21)] - -data = { - "x": x, - # y: [f(-2.2), ..., f(2.2)] - "y": [f(x) for x in x], -} - - -layout = { - # Chart title - "title": "Local extrema", - "annotations": [ - # Annotation for local maximum (x = -1) - {"text": "Local max", "font": {"size": 20}, "x": -1, "y": f(-1)}, - # Annotation for local minimum (x = 1) - {"text": "Local min", "font": {"size": 20}, "x": 1, "y": f(1), "xanchor": "left"}, - ], -} - -page = """ +if __name__ == "__main__": + # x values: [-2.2, ..., 2.2] + x = [(x - 10) / 4.5 for x in range(0, 21)] + + data = { + "x": x, + # y: [f(-2.2), ..., f(2.2)] + "y": [f(x) for x in x], + } + + layout = { + # Chart title + "title": "Local extrema", + "annotations": [ + # Annotation for local maximum (x = -1) + {"text": "Local max", "font": {"size": 20}, "x": -1, "y": f(-1)}, + # Annotation for local minimum (x = 1) + {"text": "Local min", "font": {"size": 20}, "x": 1, "y": f(1), "xanchor": "left"}, + ], + } + + page = """ # Advanced - Annotations <|{data}|chart|layout={layout}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/advanced-python-lib.py b/doc/gui/examples/charts/advanced-python-lib.py index 252a8fdd66..bc6c037d46 100644 --- a/doc/gui/examples/charts/advanced-python-lib.py +++ b/doc/gui/examples/charts/advanced-python-lib.py @@ -21,29 +21,34 @@ from taipy.gui import Gui -# Create the Plotly figure object -figure = go.Figure() - -# Add trace for Normal Distribution -figure.add_trace( - go.Violin(name="Normal", y=np.random.normal(loc=0, scale=1, size=1000), box_visible=True, meanline_visible=True) -) - -# Add trace for Exponential Distribution -figure.add_trace( - go.Violin(name="Exponential", y=np.random.exponential(scale=1, size=1000), box_visible=True, meanline_visible=True) -) - -# Add trace for Uniform Distribution -figure.add_trace( - go.Violin(name="Uniform", y=np.random.uniform(low=0, high=1, size=1000), box_visible=True, meanline_visible=True) -) - -# Updating layout for better visualization -figure.update_layout(title="Different Probability Distributions") - -page = """ +if __name__ == "__main__": + # Create the Plotly figure object + figure = go.Figure() + + # Add trace for Normal Distribution + figure.add_trace( + go.Violin(name="Normal", y=np.random.normal(loc=0, scale=1, size=1000), box_visible=True, meanline_visible=True) + ) + + # Add trace for Exponential Distribution + figure.add_trace( + go.Violin( + name="Exponential", y=np.random.exponential(scale=1, size=1000), box_visible=True, meanline_visible=True + ) + ) + + # Add trace for Uniform Distribution + figure.add_trace( + go.Violin( + name="Uniform", y=np.random.uniform(low=0, high=1, size=1000), box_visible=True, meanline_visible=True + ) + ) + + # Updating layout for better visualization + figure.update_layout(title="Different Probability Distributions") + + page = """ <|chart|figure={figure}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/advanced-selection.py b/doc/gui/examples/charts/advanced-selection.py index cd683b6dd7..385ad83a76 100644 --- a/doc/gui/examples/charts/advanced-selection.py +++ b/doc/gui/examples/charts/advanced-selection.py @@ -20,43 +20,44 @@ from taipy.gui import Gui -# x = [0..20] -x = list(range(0, 21)) -data = { - "x": x, - # A list of random values within [1, 10] - "y": [random.uniform(1, 10) for _ in x], -} +def on_change(state, var, val): + if var == "selected_indices": + state.mean_value = numpy.mean([data["y"][idx] for idx in val]) if len(val) else 0 -layout = { - # Force the Box select tool - "dragmode": "select", - # Remove all margins around the plot - "margin": {"l": 0, "r": 0, "b": 0, "t": 0}, -} -config = { - # Hide Plotly's mode bar - "displayModeBar": False -} +if __name__ == "__main__": + # x = [0..20] + x = list(range(0, 21)) -selected_indices: List = [] + data = { + "x": x, + # A list of random values within [1, 10] + "y": [random.uniform(1, 10) for _ in x], + } -mean_value = 0.0 + layout = { + # Force the Box select tool + "dragmode": "select", + # Remove all margins around the plot + "margin": {"l": 0, "r": 0, "b": 0, "t": 0}, + } + config = { + # Hide Plotly's mode bar + "displayModeBar": False + } -def on_change(state, var, val): - if var == "selected_indices": - state.mean_value = numpy.mean([data["y"][idx] for idx in val]) if len(val) else 0 + selected_indices: List = [] + mean_value = 0.0 -page = """ + page = """ # Advanced - Selection ## Mean of <|{len(selected_indices)}|raw|> selected points: <|{mean_value}|format=%.2f|raw|> <|{data}|chart|selected={selected_indices}|layout={layout}|plot_config={config}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/advanced-shapes.py b/doc/gui/examples/charts/advanced-shapes.py index d58759af0c..765bdc583e 100644 --- a/doc/gui/examples/charts/advanced-shapes.py +++ b/doc/gui/examples/charts/advanced-shapes.py @@ -21,44 +21,45 @@ def f(x): return x * x * x / 3 - x -# x values: [-2.2, ..., 2.2] -x = [(x - 10) / 4.5 for x in range(0, 21)] +if __name__ == "__main__": + # x values: [-2.2, ..., 2.2] + x = [(x - 10) / 4.5 for x in range(0, 21)] -data = { - "x": x, - # y: [f(-2.2), ..., f(2.2)] - "y": [f(x) for x in x], -} + data = { + "x": x, + # y: [f(-2.2), ..., f(2.2)] + "y": [f(x) for x in x], + } -shape_size = 0.1 + shape_size = 0.1 -layout = { - "shapes": [ - # Shape for local maximum (x = -1) - { - "x0": -1 - shape_size, - "y0": f(-1) - 2 * shape_size, - "x1": -1 + shape_size, - "y1": f(-1) + 2 * shape_size, - "fillcolor": "green", - "opacity": 0.5, - }, - # Shape for local minimum (x = 1) - { - "x0": 1 - shape_size, - "y0": f(1) - 2 * shape_size, - "x1": 1 + shape_size, - "y1": f(1) + 2 * shape_size, - "fillcolor": "red", - "opacity": 0.5, - }, - ] -} + layout = { + "shapes": [ + # Shape for local maximum (x = -1) + { + "x0": -1 - shape_size, + "y0": f(-1) - 2 * shape_size, + "x1": -1 + shape_size, + "y1": f(-1) + 2 * shape_size, + "fillcolor": "green", + "opacity": 0.5, + }, + # Shape for local minimum (x = 1) + { + "x0": 1 - shape_size, + "y0": f(1) - 2 * shape_size, + "x1": 1 + shape_size, + "y1": f(1) + 2 * shape_size, + "fillcolor": "red", + "opacity": 0.5, + }, + ] + } -page = """ + page = """ # Advanced - Annotations <|{data}|chart|layout={layout}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/advanced-unbalanced-datasets.py b/doc/gui/examples/charts/advanced-unbalanced-datasets.py index 45faebdf3e..18f79495a4 100644 --- a/doc/gui/examples/charts/advanced-unbalanced-datasets.py +++ b/doc/gui/examples/charts/advanced-unbalanced-datasets.py @@ -15,26 +15,27 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -# The first data set uses the x interval [-10..10], -# with one point at every other unit -x1_range = [x * 2 for x in range(-5, 6)] +if __name__ == "__main__": + # The first data set uses the x interval [-10..10], + # with one point at every other unit + x1_range = [x * 2 for x in range(-5, 6)] -# The second data set uses the x interval [-4..4], -# with ten point between every unit -x2_range = [x / 10 for x in range(-40, 41)] + # The second data set uses the x interval [-4..4], + # with ten point between every unit + x2_range = [x / 10 for x in range(-40, 41)] -# Definition of the two data sets -data = [ - # Coarse data set - {"x": x1_range, "Coarse": [x * x for x in x1_range]}, - # Fine data set - {"x": x2_range, "Fine": [x * x for x in x2_range]}, -] + # Definition of the two data sets + data = [ + # Coarse data set + {"x": x1_range, "Coarse": [x * x for x in x1_range]}, + # Fine data set + {"x": x2_range, "Fine": [x * x for x in x2_range]}, + ] -page = """ + page = """ # Advanced - Unbalanced data sets <|{data}|chart|x[1]=0/x|y[1]=0/Coarse|x[2]=1/x|y[2]=1/Fine|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/bar-facing.py b/doc/gui/examples/charts/bar-facing.py index 0577aa22f6..9df35f95b0 100644 --- a/doc/gui/examples/charts/bar-facing.py +++ b/doc/gui/examples/charts/bar-facing.py @@ -18,69 +18,69 @@ from taipy.gui import Gui -n_years = 10 +if __name__ == "__main__": + n_years = 10 -proportions_female = numpy.zeros(n_years) -proportions_male = numpy.zeros(n_years) + proportions_female = numpy.zeros(n_years) + proportions_male = numpy.zeros(n_years) -# Prepare the data set with random variations -proportions_female[0] = 0.4 -proportions_male[0] = proportions_female[0] * (1 + numpy.random.normal(0, 0.1)) + # Prepare the data set with random variations + proportions_female[0] = 0.4 + proportions_male[0] = proportions_female[0] * (1 + numpy.random.normal(0, 0.1)) -for i in range(1, n_years): - mean_i = (0.5 - proportions_female[i - 1]) / 5 - new_value = proportions_female[i - 1] + numpy.random.normal(mean_i, 0.1) + for i in range(1, n_years): + mean_i = (0.5 - proportions_female[i - 1]) / 5 + new_value = proportions_female[i - 1] + numpy.random.normal(mean_i, 0.1) - new_value = min(max(0, new_value), 1) - proportions_female[i] = new_value - proportions_male[i] = proportions_female[i] * (1 + numpy.random.normal(0, 0.1)) + new_value = min(max(0, new_value), 1) + proportions_female[i] = new_value + proportions_male[i] = proportions_female[i] * (1 + numpy.random.normal(0, 0.1)) + data = { + "Hobbies": [ + "Archery", + "Tennis", + "Football", + "Basket", + "Volley", + "Golf", + "Video-Games", + "Reading", + "Singing", + "Music", + ], + "Female": proportions_female, + # Negate these values so they appear to the left side + "Male": -proportions_male, + } -data = { - "Hobbies": [ - "Archery", - "Tennis", - "Football", - "Basket", - "Volley", - "Golf", - "Video-Games", - "Reading", - "Singing", - "Music", - ], - "Female": proportions_female, - # Negate these values so they appear to the left side - "Male": -proportions_male, -} + properties = { + # Shared y values + "y": "Hobbies", + # Bars for the female data set + "x[1]": "Female", + "color[1]": "#c26391", + # Bars for the male data set + "x[2]": "Male", + "color[2]": "#5c91de", + # Both data sets are represented with an horizontal orientation + "orientation": "h", + # + "layout": { + # This makes left and right bars aligned on the same y value + "barmode": "overlay", + # Set a relevant title for the x axis + "xaxis": {"title": "Gender"}, + # Hide the legend + "showlegend": False, + "margin": {"l": 100}, + }, + } -properties = { - # Shared y values - "y": "Hobbies", - # Bars for the female data set - "x[1]": "Female", - "color[1]": "#c26391", - # Bars for the male data set - "x[2]": "Male", - "color[2]": "#5c91de", - # Both data sets are represented with an horizontal orientation - "orientation": "h", - # - "layout": { - # This makes left and right bars aligned on the same y value - "barmode": "overlay", - # Set a relevant title for the x axis - "xaxis": {"title": "Gender"}, - # Hide the legend - "showlegend": False, - "margin": {"l": 100}, - }, -} - -page = """ + page = """ # Bar - Facing <|{data}|chart|type=bar|properties={properties}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/bar-multiple.py b/doc/gui/examples/charts/bar-multiple.py index 8c36ed12a9..eb4f52a2fd 100644 --- a/doc/gui/examples/charts/bar-multiple.py +++ b/doc/gui/examples/charts/bar-multiple.py @@ -18,37 +18,38 @@ from taipy.gui import Gui -# Source https://en.wikipedia.org/wiki/List_of_United_States_presidential_elections_by_popular_vote_margin -percentages = [ - (1852, 50.83), - (1856, 45.29), - (1860, 39.65), - (1864, 55.03), - (1868, 52.66), - (1872, 55.58), - (1876, 47.92), - (1880, 48.31), - (1884, 48.85), - (1888, 47.80), - (1892, 46.02), - (1896.0, 51.02), - (1900, 51.64), - (1904, 56.42), - (1908, 51.57), - (1912, 41.84), - (1916, 49.24), - (1920, 60.32), - (1924, 54.04), - (1928, 58.21), -] -data = pandas.DataFrame(percentages, columns=["Year", "Won"]) -lost = [100 - t[1] for t in percentages] -data["Lost"] = lost +if __name__ == "__main__": + # Source https://en.wikipedia.org/wiki/List_of_United_States_presidential_elections_by_popular_vote_margin + percentages = [ + (1852, 50.83), + (1856, 45.29), + (1860, 39.65), + (1864, 55.03), + (1868, 52.66), + (1872, 55.58), + (1876, 47.92), + (1880, 48.31), + (1884, 48.85), + (1888, 47.80), + (1892, 46.02), + (1896.0, 51.02), + (1900, 51.64), + (1904, 56.42), + (1908, 51.57), + (1912, 41.84), + (1916, 49.24), + (1920, 60.32), + (1924, 54.04), + (1928, 58.21), + ] + data = pandas.DataFrame(percentages, columns=["Year", "Won"]) + lost = [100 - t[1] for t in percentages] + data["Lost"] = lost -page = """ + page = """ # Bar - Multiple <|{data}|chart|type=bar|x=Year|y[1]=Won|y[2]=Lost|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/bar-simple.py b/doc/gui/examples/charts/bar-simple.py index 91bb1a8c82..7cae01ea04 100644 --- a/doc/gui/examples/charts/bar-simple.py +++ b/doc/gui/examples/charts/bar-simple.py @@ -17,58 +17,59 @@ from taipy.gui import Gui -# Source https://en.wikipedia.org/wiki/List_of_United_States_presidential_elections_by_popular_vote_margin -percentages = [ - (1852, 50.83), - (1856, 45.29), - (1860, 39.65), - (1864, 55.03), - (1868, 52.66), - (1872, 55.58), - (1876, 47.92), - (1880, 48.31), - (1884, 48.85), - (1888, 47.80), - (1892, 46.02), - (1896.0, 51.02), - (1900, 51.64), - (1904, 56.42), - (1908, 51.57), - (1912, 41.84), - (1916, 49.24), - (1920, 60.32), - (1924, 54.04), - (1928, 58.21), - (1932, 57.41), - (1936, 60.80), - (1940, 54.74), - (1944, 53.39), - (1948, 49.55), - (1952, 55.18), - (1956, 57.37), - (1960, 49.72), - (1964, 61.05), - (1968, 43.42), - (1972, 60.67), - (1976, 50.08), - (1980, 50.75), - (1984, 58.77), - (1988, 53.37), - (1992, 43.01), - (1996, 49.23), - (2000, 47.87), - (2004, 50.73), - (2008, 52.93), - (2012, 51.06), - (2016, 46.09), - (2020, 51.31), -] -data = pandas.DataFrame(percentages, columns=["Year", "%"]) +if __name__ == "__main__": + # Source https://en.wikipedia.org/wiki/List_of_United_States_presidential_elections_by_popular_vote_margin + percentages = [ + (1852, 50.83), + (1856, 45.29), + (1860, 39.65), + (1864, 55.03), + (1868, 52.66), + (1872, 55.58), + (1876, 47.92), + (1880, 48.31), + (1884, 48.85), + (1888, 47.80), + (1892, 46.02), + (1896.0, 51.02), + (1900, 51.64), + (1904, 56.42), + (1908, 51.57), + (1912, 41.84), + (1916, 49.24), + (1920, 60.32), + (1924, 54.04), + (1928, 58.21), + (1932, 57.41), + (1936, 60.80), + (1940, 54.74), + (1944, 53.39), + (1948, 49.55), + (1952, 55.18), + (1956, 57.37), + (1960, 49.72), + (1964, 61.05), + (1968, 43.42), + (1972, 60.67), + (1976, 50.08), + (1980, 50.75), + (1984, 58.77), + (1988, 53.37), + (1992, 43.01), + (1996, 49.23), + (2000, 47.87), + (2004, 50.73), + (2008, 52.93), + (2012, 51.06), + (2016, 46.09), + (2020, 51.31), + ] + data = pandas.DataFrame(percentages, columns=["Year", "%"]) -page = """ + page = """ # Bar - Simple <|{data}|chart|type=bar|x=Year|y=%|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/bar-stacked.py b/doc/gui/examples/charts/bar-stacked.py index 06d3d05925..7c45f67ac8 100644 --- a/doc/gui/examples/charts/bar-stacked.py +++ b/doc/gui/examples/charts/bar-stacked.py @@ -17,41 +17,42 @@ from taipy.gui import Gui -# Source https://en.wikipedia.org/wiki/List_of_United_States_presidential_elections_by_popular_vote_margin -percentages = [ - (1852, 50.83), - (1856, 45.29), - (1860, 39.65), - (1864, 55.03), - (1868, 52.66), - (1872, 55.58), - (1876, 47.92), - (1880, 48.31), - (1884, 48.85), - (1888, 47.80), - (1892, 46.02), - (1896.0, 51.02), - (1900, 51.64), - (1904, 56.42), - (1908, 51.57), - (1912, 41.84), - (1916, 49.24), - (1920, 60.32), - (1924, 54.04), - (1928, 58.21), -] - -# Lost percentage = 100-Won percentage -full = [(t[0], t[1], 100 - t[1]) for t in percentages] - -data = pandas.DataFrame(full, columns=["Year", "Won", "Lost"]) - -layout = {"barmode": "stack"} - -page = """ +if __name__ == "__main__": + # Source https://en.wikipedia.org/wiki/List_of_United_States_presidential_elections_by_popular_vote_margin + percentages = [ + (1852, 50.83), + (1856, 45.29), + (1860, 39.65), + (1864, 55.03), + (1868, 52.66), + (1872, 55.58), + (1876, 47.92), + (1880, 48.31), + (1884, 48.85), + (1888, 47.80), + (1892, 46.02), + (1896.0, 51.02), + (1900, 51.64), + (1904, 56.42), + (1908, 51.57), + (1912, 41.84), + (1916, 49.24), + (1920, 60.32), + (1924, 54.04), + (1928, 58.21), + ] + + # Lost percentage = 100-Won percentage + full = [(t[0], t[1], 100 - t[1]) for t in percentages] + + data = pandas.DataFrame(full, columns=["Year", "Won", "Lost"]) + + layout = {"barmode": "stack"} + + page = """ # Bar - Stacked <|{data}|chart|type=bar|x=Year|y[1]=Won|y[2]=Lost|layout={layout}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/basics-multiple.py b/doc/gui/examples/charts/basics-multiple.py index 2c4980d340..18435d429e 100644 --- a/doc/gui/examples/charts/basics-multiple.py +++ b/doc/gui/examples/charts/basics-multiple.py @@ -15,22 +15,23 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -# x values are [-10..10] -x_range = range(-10, 11) +if __name__ == "__main__": + # x values are [-10..10] + x_range = range(-10, 11) -# The data set holds the _x_ series and two distinct series for _y_ -data = { - "x": x_range, - # y1 = x*x - "y1": [x * x for x in x_range], - # y2 = 100-x*x - "y2": [100 - x * x for x in x_range], -} + # The data set holds the _x_ series and two distinct series for _y_ + data = { + "x": x_range, + # y1 = x*x + "y1": [x * x for x in x_range], + # y2 = 100-x*x + "y2": [100 - x * x for x in x_range], + } -page = """ + page = """ # Basics - Multiple traces <|{data}|chart|x=x|y[1]=y1|y[2]=y2|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/basics-simple.py b/doc/gui/examples/charts/basics-simple.py index 9c5d2b448b..52b4b28830 100644 --- a/doc/gui/examples/charts/basics-simple.py +++ b/doc/gui/examples/charts/basics-simple.py @@ -15,12 +15,13 @@ # ----------------------------------------------------------------------------------------- from taipy import Gui -# The chart control's data is defined as inline -# code. -page = """ +if __name__ == "__main__": + # The chart control's data is defined as inline + # code. + page = """ # Basics - Simple line <|{[x*x for x in range(0, 11)]}|chart|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/basics-timeline.py b/doc/gui/examples/charts/basics-timeline.py index d3c8fb2cb8..10468259e0 100644 --- a/doc/gui/examples/charts/basics-timeline.py +++ b/doc/gui/examples/charts/basics-timeline.py @@ -18,13 +18,17 @@ from taipy.gui import Gui -# Generate a random value for every hour on a given day -data = {"Date": pandas.date_range("2023-01-04", periods=24, freq="H"), "Value": pandas.Series(numpy.random.randn(24))} +if __name__ == "__main__": + # Generate a random value for every hour on a given day + data = { + "Date": pandas.date_range("2023-01-04", periods=24, freq="H"), + "Value": pandas.Series(numpy.random.randn(24)), + } -page = """ + page = """ # Basics - Timeline <|{data}|chart|x=Date|y=Value|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/basics-title.py b/doc/gui/examples/charts/basics-title.py index b706b80054..cb1af3ccdc 100644 --- a/doc/gui/examples/charts/basics-title.py +++ b/doc/gui/examples/charts/basics-title.py @@ -15,17 +15,18 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -layout = { - "xaxis": { - # Force the title of the x axis - "title": "Values for x" +if __name__ == "__main__": + layout = { + "xaxis": { + # Force the title of the x axis + "title": "Values for x" + } } -} -page = """ + page = """ # Basics - Title <|{[x*x for x in range(0, 11)]}|chart|title=Plotting x squared|layout={layout}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/basics-two-y-axis.py b/doc/gui/examples/charts/basics-two-y-axis.py index 10dee398a9..361c14c086 100644 --- a/doc/gui/examples/charts/basics-two-y-axis.py +++ b/doc/gui/examples/charts/basics-two-y-axis.py @@ -15,34 +15,35 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -# x values are [-10..10] -x_range = range(-10, 11) - -# The data set holds the _x_ series and two distinct series for _y_ -data = { - "x": x_range, - # y1 = x*x - "y1": [x * x for x in x_range], - # y2 = 2-x*x/50 - "y2": [(100 - x * x) / 50 for x in x_range], -} - -layout = { - "yaxis2": { - # Second axis overlays with the first y axis - "overlaying": "y", - # Place the second axis on the right - "side": "right", - # and give it a title - "title": "Second y axis", - }, - "legend": { - # Place the legend above chart - "yanchor": "bottom" - }, -} - -page = """ +if __name__ == "__main__": + # x values are [-10..10] + x_range = range(-10, 11) + + # The data set holds the _x_ series and two distinct series for _y_ + data = { + "x": x_range, + # y1 = x*x + "y1": [x * x for x in x_range], + # y2 = 2-x*x/50 + "y2": [(100 - x * x) / 50 for x in x_range], + } + + layout = { + "yaxis2": { + # Second axis overlays with the first y axis + "overlaying": "y", + # Place the second axis on the right + "side": "right", + # and give it a title + "title": "Second y axis", + }, + "legend": { + # Place the legend above chart + "yanchor": "bottom" + }, + } + + page = """ # Basics - Multiple axis Shared axis: @@ -50,7 +51,6 @@ With two axis: <|{data}|chart|x=x|y[1]=y1|y[2]=y2|yaxis[2]=y2|layout={layout}|height=300px|> + """ -""" - -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/basics-xrange.py b/doc/gui/examples/charts/basics-xrange.py index af21202149..bc8e2b325c 100644 --- a/doc/gui/examples/charts/basics-xrange.py +++ b/doc/gui/examples/charts/basics-xrange.py @@ -15,16 +15,17 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -# x values are [-10..10] -x_range = range(-10, 11) +if __name__ == "__main__": + # x values are [-10..10] + x_range = range(-10, 11) -# The data set that holds both the x and the y values -data = {"X": x_range, "Y": [x * x for x in x_range]} + # The data set that holds both the x and the y values + data = {"X": x_range, "Y": [x * x for x in x_range]} -page = """ + page = """ # Basics - X range <|{data}|chart|x=X|y=Y|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/bubble-hover.py b/doc/gui/examples/charts/bubble-hover.py index 9c0bfbc11d..74424f5e76 100644 --- a/doc/gui/examples/charts/bubble-hover.py +++ b/doc/gui/examples/charts/bubble-hover.py @@ -15,24 +15,25 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -data = { - "x": [1, 2, 3], - "y": [1, 2, 3], - "Texts": ["Blue
Small", "Green
Medium", "Red
Large"], - "Sizes": [60, 80, 100], - "Colors": [ - "rgb(93, 164, 214)", - "rgb(44, 160, 101)", - "rgb(255, 65, 54)", - ], -} +if __name__ == "__main__": + data = { + "x": [1, 2, 3], + "y": [1, 2, 3], + "Texts": ["Blue
Small", "Green
Medium", "Red
Large"], + "Sizes": [60, 80, 100], + "Colors": [ + "rgb(93, 164, 214)", + "rgb(44, 160, 101)", + "rgb(255, 65, 54)", + ], + } -marker = {"size": "Sizes", "color": "Colors"} + marker = {"size": "Sizes", "color": "Colors"} -page = """ + page = """ # Bubble - Hover text <|{data}|chart|mode=markers|x=x|y=y|marker={marker}|text=Texts|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/bubble-simple.py b/doc/gui/examples/charts/bubble-simple.py index 454f35feb3..f2bf56ee03 100644 --- a/doc/gui/examples/charts/bubble-simple.py +++ b/doc/gui/examples/charts/bubble-simple.py @@ -16,20 +16,21 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -data = { - "x": [1, 2, 3], - "y": [1, 2, 3], - "Colors": ["blue", "green", "red"], - "Sizes": [20, 40, 30], - "Opacities": [1, 0.4, 1], -} +if __name__ == "__main__": + data = { + "x": [1, 2, 3], + "y": [1, 2, 3], + "Colors": ["blue", "green", "red"], + "Sizes": [20, 40, 30], + "Opacities": [1, 0.4, 1], + } -marker = {"color": "Colors", "size": "Sizes", "opacity": "Opacities"} + marker = {"color": "Colors", "size": "Sizes", "opacity": "Opacities"} -page = """ + page = """ # Bubble - Simple <|{data}|chart|mode=markers|x=x|y=y|marker={marker}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/bubble-symbols.py b/doc/gui/examples/charts/bubble-symbols.py index 875d39d508..abecf011ca 100644 --- a/doc/gui/examples/charts/bubble-symbols.py +++ b/doc/gui/examples/charts/bubble-symbols.py @@ -16,23 +16,24 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -data = { - "x": [1, 2, 3, 4, 5], - "y": [10, 7, 4, 1, 5], - "Sizes": [20, 30, 40, 50, 30], - "Symbols": ["circle-open", "triangle-up", "hexagram", "star-diamond", "circle-cross"], -} +if __name__ == "__main__": + data = { + "x": [1, 2, 3, 4, 5], + "y": [10, 7, 4, 1, 5], + "Sizes": [20, 30, 40, 50, 30], + "Symbols": ["circle-open", "triangle-up", "hexagram", "star-diamond", "circle-cross"], + } -marker = { - "color": "#77A", - "size": "Sizes", - "symbol": "Symbols", -} + marker = { + "color": "#77A", + "size": "Sizes", + "symbol": "Symbols", + } -page = """ + page = """ # Bubble - Symbols <|{data}|chart|mode=markers|x=x|y=y|marker={marker}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/candlestick-simple.py b/doc/gui/examples/charts/candlestick-simple.py index 14e6514dec..91b9cacdd1 100644 --- a/doc/gui/examples/charts/candlestick-simple.py +++ b/doc/gui/examples/charts/candlestick-simple.py @@ -18,18 +18,19 @@ from taipy import Gui -# Extraction of a month of stock data for AAPL using the -# yfinance package (see https://pypi.org/project/yfinance/). -ticker = yfinance.Ticker("AAPL") -# The returned value is a Pandas DataFrame. -stock = ticker.history(interval="1d", start="2018-08-01", end="2018-08-31") -# Copy the DataFrame's index to a new column -stock["Date"] = stock.index +if __name__ == "__main__": + # Extraction of a month of stock data for AAPL using the + # yfinance package (see https://pypi.org/project/yfinance/). + ticker = yfinance.Ticker("AAPL") + # The returned value is a Pandas DataFrame. + stock = ticker.history(interval="1d", start="2018-08-01", end="2018-08-31") + # Copy the DataFrame's index to a new column + stock["Date"] = stock.index -page = """ + page = """ # Candlestick - Simple <|{stock}|chart|type=candlestick|x=Date|open=Open|close=Close|low=Low|high=High|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/candlestick-styling.py b/doc/gui/examples/charts/candlestick-styling.py index 0dd2699966..58b2de578a 100644 --- a/doc/gui/examples/charts/candlestick-styling.py +++ b/doc/gui/examples/charts/candlestick-styling.py @@ -18,32 +18,33 @@ from taipy.gui import Gui -# Extraction of a few days of stock historical data for AAPL using -# the yfinance package (see https://pypi.org/project/yfinance/). -# The returned value is a Pandas DataFrame. -ticker = yfinance.Ticker("AAPL") -stock = ticker.history(interval="1d", start="2018-08-18", end="2018-09-10") -# Copy the DataFrame index to a new column -stock["Date"] = stock.index +if __name__ == "__main__": + # Extraction of a few days of stock historical data for AAPL using + # the yfinance package (see https://pypi.org/project/yfinance/). + # The returned value is a Pandas DataFrame. + ticker = yfinance.Ticker("AAPL") + stock = ticker.history(interval="1d", start="2018-08-18", end="2018-09-10") + # Copy the DataFrame index to a new column + stock["Date"] = stock.index -options = { - # Candlesticks that show decreasing values are orange - "decreasing": {"line": {"color": "orange"}}, - # Candlesticks that show decreasing values are blue - "increasing": {"line": {"color": "blue"}}, -} + options = { + # Candlesticks that show decreasing values are orange + "decreasing": {"line": {"color": "orange"}}, + # Candlesticks that show decreasing values are blue + "increasing": {"line": {"color": "blue"}}, + } -layout = { - "xaxis": { - # Hide the range slider - "rangeslider": {"visible": False} + layout = { + "xaxis": { + # Hide the range slider + "rangeslider": {"visible": False} + } } -} -page = """ + page = """ # Candlestick - Styling <|{stock}|chart|type=candlestick|x=Date|open=Open|close=Close|low=Low|high=High|options={options}|layout={layout}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/candlestick-timeseries.py b/doc/gui/examples/charts/candlestick-timeseries.py index 956c1f8e76..69f9f46990 100644 --- a/doc/gui/examples/charts/candlestick-timeseries.py +++ b/doc/gui/examples/charts/candlestick-timeseries.py @@ -17,46 +17,47 @@ from taipy.gui import Gui -# Retrieved history: -# (Open, Close, Low, High) -stock_history = [ - (311.05, 311.00, 310.75, 311.33), - (308.53, 308.31, 307.72, 309.00), - (307.35, 306.24, 306.12, 307.46), - (306.35, 304.90, 304.34, 310.10), - (304.90, 302.99, 302.27, 307.00), - (303.03, 301.66, 301.20, 303.25), - (301.61, 299.58, 299.50, 301.89), - (299.58, 297.95, 297.80, 300.06), - (297.95, 299.03, 297.14, 299.67), - (299.03, 301.87, 296.71, 301.89), - (301.89, 299.40, 298.73, 302.93), - (299.50, 299.35, 298.83, 299.50), - (299.35, 299.20, 299.19, 299.68), - (299.42, 300.50, 299.42, 300.50), - (300.70, 300.65, 300.32, 300.75), - (300.65, 299.91, 299.91, 300.76), -] -start_date = datetime.datetime(year=2022, month=10, day=21) -period = datetime.timedelta(seconds=4 * 60 * 60) # 4 hours +if __name__ == "__main__": + # Retrieved history: + # (Open, Close, Low, High) + stock_history = [ + (311.05, 311.00, 310.75, 311.33), + (308.53, 308.31, 307.72, 309.00), + (307.35, 306.24, 306.12, 307.46), + (306.35, 304.90, 304.34, 310.10), + (304.90, 302.99, 302.27, 307.00), + (303.03, 301.66, 301.20, 303.25), + (301.61, 299.58, 299.50, 301.89), + (299.58, 297.95, 297.80, 300.06), + (297.95, 299.03, 297.14, 299.67), + (299.03, 301.87, 296.71, 301.89), + (301.89, 299.40, 298.73, 302.93), + (299.50, 299.35, 298.83, 299.50), + (299.35, 299.20, 299.19, 299.68), + (299.42, 300.50, 299.42, 300.50), + (300.70, 300.65, 300.32, 300.75), + (300.65, 299.91, 299.91, 300.76), + ] + start_date = datetime.datetime(year=2022, month=10, day=21) + period = datetime.timedelta(seconds=4 * 60 * 60) # 4 hours -data = { - # Compute date series - "Date": [start_date + n * period for n in range(0, len(stock_history))], - # Extract open values - "Open": [v[0] for v in stock_history], - # Extract close values - "Close": [v[1] for v in stock_history], - # Extract low values - "Low": [v[2] for v in stock_history], - # Extract high values - "High": [v[3] for v in stock_history], -} + data = { + # Compute date series + "Date": [start_date + n * period for n in range(0, len(stock_history))], + # Extract open values + "Open": [v[0] for v in stock_history], + # Extract close values + "Close": [v[1] for v in stock_history], + # Extract low values + "Low": [v[2] for v in stock_history], + # Extract high values + "High": [v[3] for v in stock_history], + } -md = """ + md = """ # Candlestick - Timeline <|{data}|chart|type=candlestick|x=Date|open=Open|close=Close|low=Low|high=High|> -""" + """ -Gui(md).run() + Gui(md).run() diff --git a/doc/gui/examples/charts/continuous-error-multiple.py b/doc/gui/examples/charts/continuous-error-multiple.py index 6986267846..21a62bfec8 100644 --- a/doc/gui/examples/charts/continuous-error-multiple.py +++ b/doc/gui/examples/charts/continuous-error-multiple.py @@ -20,97 +20,98 @@ from taipy.gui import Gui -# Data is collected from January 1st, 2010, every month -start_date = datetime.datetime(year=2010, month=1, day=1) -period = dateutil.relativedelta.relativedelta(months=1) +if __name__ == "__main__": + # Data is collected from January 1st, 2010, every month + start_date = datetime.datetime(year=2010, month=1, day=1) + period = dateutil.relativedelta.relativedelta(months=1) -# Data -# All arrays have the same size (the number of months to track) -prices: Dict[str, List] = { - # Data for apples - "apples": [2.48, 2.47, 2.5, 2.47, 2.46, 2.38, 2.31, 2.25, 2.39, 2.41, 2.59, 2.61], - "apples_low": [1.58, 1.58, 1.59, 1.64, 1.79, 1.54, 1.53, 1.61, 1.65, 2.02, 1.92, 1.54], - "apples_high": [3.38, 3.32, 2.63, 2.82, 2.58, 2.53, 3.27, 3.15, 3.44, 3.42, 3.08, 2.86], - "bananas": [2.94, 2.50, 2.39, 2.77, 2.43, 2.32, 2.37, 1.90, 2.31, 2.71, 3.38, 1.92], - "bananas_low": [2.12, 1.90, 1.69, 2.44, 1.58, 1.81, 1.44, 1.00, 1.59, 1.74, 2.78, 0.96], - "bananas_high": [3.32, 2.70, 3.12, 3.25, 3.00, 2.63, 2.54, 2.37, 2.97, 3.69, 4.36, 2.95], - "cherries": [6.18, None, None, None, 3.69, 2.46, 2.31, 2.57, None, None, 6.50, 4.38], - "cherries_high": [7.00, None, None, None, 8.50, 6.27, 5.61, 4.36, None, None, 8.00, 7.23], - "cherries_low": [3.55, None, None, None, 1.20, 0.87, 1.08, 1.50, None, None, 5.00, 4.20], -} + # Data + # All arrays have the same size (the number of months to track) + prices: Dict[str, List] = { + # Data for apples + "apples": [2.48, 2.47, 2.5, 2.47, 2.46, 2.38, 2.31, 2.25, 2.39, 2.41, 2.59, 2.61], + "apples_low": [1.58, 1.58, 1.59, 1.64, 1.79, 1.54, 1.53, 1.61, 1.65, 2.02, 1.92, 1.54], + "apples_high": [3.38, 3.32, 2.63, 2.82, 2.58, 2.53, 3.27, 3.15, 3.44, 3.42, 3.08, 2.86], + "bananas": [2.94, 2.50, 2.39, 2.77, 2.43, 2.32, 2.37, 1.90, 2.31, 2.71, 3.38, 1.92], + "bananas_low": [2.12, 1.90, 1.69, 2.44, 1.58, 1.81, 1.44, 1.00, 1.59, 1.74, 2.78, 0.96], + "bananas_high": [3.32, 2.70, 3.12, 3.25, 3.00, 2.63, 2.54, 2.37, 2.97, 3.69, 4.36, 2.95], + "cherries": [6.18, None, None, None, 3.69, 2.46, 2.31, 2.57, None, None, 6.50, 4.38], + "cherries_high": [7.00, None, None, None, 8.50, 6.27, 5.61, 4.36, None, None, 8.00, 7.23], + "cherries_low": [3.55, None, None, None, 1.20, 0.87, 1.08, 1.50, None, None, 5.00, 4.20], + } -# Create monthly time series -months = [start_date + n * period for n in range(0, len(prices["apples"]))] + # Create monthly time series + months = [start_date + n * period for n in range(0, len(prices["apples"]))] -data = [ - # Raw data - {"Months": months, "apples": prices["apples"], "bananas": prices["bananas"], "cherries": prices["cherries"]}, - # Range data (twice as many values) - { - "Months2": months + list(reversed(months)), - "apples": prices["apples_high"] + list(reversed(prices["apples_low"])), - "bananas": prices["bananas_high"] + list(reversed(prices["bananas_low"])), - "cherries": prices["cherries_high"] + list(reversed(prices["cherries_low"])), - }, -] + data = [ + # Raw data + {"Months": months, "apples": prices["apples"], "bananas": prices["bananas"], "cherries": prices["cherries"]}, + # Range data (twice as many values) + { + "Months2": months + list(reversed(months)), + "apples": prices["apples_high"] + list(reversed(prices["apples_low"])), + "bananas": prices["bananas_high"] + list(reversed(prices["bananas_low"])), + "cherries": prices["cherries_high"] + list(reversed(prices["cherries_low"])), + }, + ] -properties = { - # First trace: reference for Apples - "x[1]": "0/Months", - "y[1]": "0/apples", - "color[1]": "rgb(0,200,80)", - # Hide line - "mode[1]": "markers", - # Show in the legend - "name[1]": "Apples", - # Second trace: reference for Bananas - "x[2]": "0/Months", - "y[2]": "0/bananas", - "color[2]": "rgb(0,100,240)", - # Hide line - "mode[2]": "markers", - # Show in the legend - "name[2]": "Bananas", - # Third trace: reference for Cherries - "x[3]": "0/Months", - "y[3]": "0/cherries", - "color[3]": "rgb(240,60,60)", - # Hide line - "mode[3]": "markers", - # Show in the legend - "name[3]": "Cherries", - # Fourth trace: range for Apples - "x[4]": "1/Months2", - "y[4]": "1/apples", - "options[4]": { - "fill": "tozerox", - "showlegend": False, - "fillcolor": "rgba(0,100,80,0.4)", - }, - # No surrounding stroke - "color[4]": "transparent", - # Fifth trace: range for Bananas - "x[5]": "1/Months2", - "y[5]": "1/bananas", - "options[5]": {"fill": "tozerox", "showlegend": False, "fillcolor": "rgba(0,180,250,0.4)"}, - # No surrounding stroke - "color[5]": "transparent", - # Sixth trace: range for Cherries - "x[6]": "1/Months2", - "y[6]": "1/cherries", - "options[6]": { - "fill": "tozerox", - "showlegend": False, - "fillcolor": "rgba(230,100,120,0.4)", - }, - # No surrounding stroke - "color[6]": "transparent", -} + properties = { + # First trace: reference for Apples + "x[1]": "0/Months", + "y[1]": "0/apples", + "color[1]": "rgb(0,200,80)", + # Hide line + "mode[1]": "markers", + # Show in the legend + "name[1]": "Apples", + # Second trace: reference for Bananas + "x[2]": "0/Months", + "y[2]": "0/bananas", + "color[2]": "rgb(0,100,240)", + # Hide line + "mode[2]": "markers", + # Show in the legend + "name[2]": "Bananas", + # Third trace: reference for Cherries + "x[3]": "0/Months", + "y[3]": "0/cherries", + "color[3]": "rgb(240,60,60)", + # Hide line + "mode[3]": "markers", + # Show in the legend + "name[3]": "Cherries", + # Fourth trace: range for Apples + "x[4]": "1/Months2", + "y[4]": "1/apples", + "options[4]": { + "fill": "tozerox", + "showlegend": False, + "fillcolor": "rgba(0,100,80,0.4)", + }, + # No surrounding stroke + "color[4]": "transparent", + # Fifth trace: range for Bananas + "x[5]": "1/Months2", + "y[5]": "1/bananas", + "options[5]": {"fill": "tozerox", "showlegend": False, "fillcolor": "rgba(0,180,250,0.4)"}, + # No surrounding stroke + "color[5]": "transparent", + # Sixth trace: range for Cherries + "x[6]": "1/Months2", + "y[6]": "1/cherries", + "options[6]": { + "fill": "tozerox", + "showlegend": False, + "fillcolor": "rgba(230,100,120,0.4)", + }, + # No surrounding stroke + "color[6]": "transparent", + } -page = """ + page = """ # Continuous Error - Multiple traces <|{data}|chart|properties={properties}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/continuous-error-simple.py b/doc/gui/examples/charts/continuous-error-simple.py index 9142ce701b..03d0925c57 100644 --- a/doc/gui/examples/charts/continuous-error-simple.py +++ b/doc/gui/examples/charts/continuous-error-simple.py @@ -17,58 +17,59 @@ from taipy.gui import Gui -# Common axis for all data: [1..10] -x = list(range(1, 11)) -# Sample data -samples = [5, 7, 8, 4, 5, 9, 8, 8, 6, 5] +if __name__ == "__main__": + # Common axis for all data: [1..10] + x = list(range(1, 11)) + # Sample data + samples = [5, 7, 8, 4, 5, 9, 8, 8, 6, 5] -# Generate error data -# Error that adds to the input data -error_plus = [3 * random.random() + 0.5 for _ in x] -# Error subtracted from to the input data -error_minus = [3 * random.random() + 0.5 for _ in x] + # Generate error data + # Error that adds to the input data + error_plus = [3 * random.random() + 0.5 for _ in x] + # Error subtracted from to the input data + error_minus = [3 * random.random() + 0.5 for _ in x] -# Upper bound (y + error_plus) -error_upper = [y + e for (y, e) in zip(samples, error_plus)] -# Lower bound (y - error_minus) -error_lower = [y - e for (y, e) in zip(samples, error_minus)] + # Upper bound (y + error_plus) + error_upper = [y + e for (y, e) in zip(samples, error_plus)] + # Lower bound (y - error_minus) + error_lower = [y - e for (y, e) in zip(samples, error_minus)] -data = [ - # Trace for samples - {"x": x, "y": samples}, - # Trace for error range - { - # Roundtrip around the error bounds: onward then return - "x": x + list(reversed(x)), - # The two error bounds, with lower bound reversed - "y": error_upper + list(reversed(error_lower)), - }, -] + data = [ + # Trace for samples + {"x": x, "y": samples}, + # Trace for error range + { + # Roundtrip around the error bounds: onward then return + "x": x + list(reversed(x)), + # The two error bounds, with lower bound reversed + "y": error_upper + list(reversed(error_lower)), + }, + ] -properties = { - # Error data - "x[1]": "1/x", - "y[1]": "1/y", - "options[1]": { - # Shows as filled area - "fill": "toself", - "fillcolor": "rgba(70,70,240,0.6)", - "showlegend": False, - }, - # Don't show surrounding stroke - "color[1]": "transparent", - # Raw data (displayed on top of the error band) - "x[2]": "0/x", - "y[2]": "0/y", - "color[2]": "rgb(140,50,50)", - # Shown in the legend - "name[2]": "Input", -} + properties = { + # Error data + "x[1]": "1/x", + "y[1]": "1/y", + "options[1]": { + # Shows as filled area + "fill": "toself", + "fillcolor": "rgba(70,70,240,0.6)", + "showlegend": False, + }, + # Don't show surrounding stroke + "color[1]": "transparent", + # Raw data (displayed on top of the error band) + "x[2]": "0/x", + "y[2]": "0/y", + "color[2]": "rgb(140,50,50)", + # Shown in the legend + "name[2]": "Input", + } -page = """ + page = """ # Continuous Error - Simple <|{data}|chart|properties={properties}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/error-bars-asymmetric.py b/doc/gui/examples/charts/error-bars-asymmetric.py index 4d9fc7db85..42b6ceabe6 100644 --- a/doc/gui/examples/charts/error-bars-asymmetric.py +++ b/doc/gui/examples/charts/error-bars-asymmetric.py @@ -17,35 +17,36 @@ from taipy.gui import Gui -# Number of samples -n_samples = 10 -# y values: [0..n_samples-1] -y = range(0, n_samples) +if __name__ == "__main__": + # Number of samples + n_samples = 10 + # y values: [0..n_samples-1] + y = range(0, n_samples) -data = { - # The x series is made of random numbers between 1 and 10 - "x": [random.uniform(1, 10) for _ in y], - "y": y, -} + data = { + # The x series is made of random numbers between 1 and 10 + "x": [random.uniform(1, 10) for _ in y], + "y": y, + } -options = { - "error_x": { - "type": "data", - # Allows for a 'plus' and a 'minus' error data - "symmetric": False, - # The 'plus' error data is a series of random numbers - "array": [random.uniform(0, 5) for _ in y], - # The 'minus' error data is a series of random numbers - "arrayminus": [random.uniform(0, 2) for _ in y], - # Color of the error bar - "color": "red", + options = { + "error_x": { + "type": "data", + # Allows for a 'plus' and a 'minus' error data + "symmetric": False, + # The 'plus' error data is a series of random numbers + "array": [random.uniform(0, 5) for _ in y], + # The 'minus' error data is a series of random numbers + "arrayminus": [random.uniform(0, 2) for _ in y], + # Color of the error bar + "color": "red", + } } -} -page = """ + page = """ # Error bars - Asymmetric <|{data}|chart|type=bar|x=x|y=y|orientation=h|options={options}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/error-bars-simple.py b/doc/gui/examples/charts/error-bars-simple.py index 6ccd88c2f5..aa1a3a154f 100644 --- a/doc/gui/examples/charts/error-bars-simple.py +++ b/doc/gui/examples/charts/error-bars-simple.py @@ -18,34 +18,35 @@ from taipy.gui import Gui -# Number of samples -max_x = 20 -# x values: [0..max_x-1] -x = range(0, max_x) -# Generate random sampling error margins -error_ranges = [random.uniform(0, 5) for _ in x] -# Compute a perfect sine wave -perfect_y = [10 * math.sin(4 * math.pi * i / max_x) for i in x] -# Compute a sine wave impacted by the sampling error -# The error is between ±error_ranges[x]/2 -y = [perfect_y[i] + random.uniform(-error_ranges[i] / 2, error_ranges[i] / 2) for i in x] +if __name__ == "__main__": + # Number of samples + max_x = 20 + # x values: [0..max_x-1] + x = range(0, max_x) + # Generate random sampling error margins + error_ranges = [random.uniform(0, 5) for _ in x] + # Compute a perfect sine wave + perfect_y = [10 * math.sin(4 * math.pi * i / max_x) for i in x] + # Compute a sine wave impacted by the sampling error + # The error is between ±error_ranges[x]/2 + y = [perfect_y[i] + random.uniform(-error_ranges[i] / 2, error_ranges[i] / 2) for i in x] -# The chart data is made of the three series -data = { - "x": x, - "y1": y, - "y2": perfect_y, -} + # The chart data is made of the three series + data = { + "x": x, + "y1": y, + "y2": perfect_y, + } -options = { - # Create the error bar information: - "error_y": {"type": "data", "array": error_ranges} -} + options = { + # Create the error bar information: + "error_y": {"type": "data", "array": error_ranges} + } -page = """ + page = """ # Error bars - Simple <|{data}|chart|x=x|y[1]=y1|y[2]=y2|options[1]={options}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/example-rebuild.py b/doc/gui/examples/charts/example-rebuild.py index 81f4cac7e2..1851df54f5 100644 --- a/doc/gui/examples/charts/example-rebuild.py +++ b/doc/gui/examples/charts/example-rebuild.py @@ -17,17 +17,18 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -# x values: [-10..10] -x_range = range(-10, 11) -data = {"X": x_range, "Y": [x * x for x in x_range]} +if __name__ == "__main__": + # x values: [-10..10] + x_range = range(-10, 11) + data = {"X": x_range, "Y": [x * x for x in x_range]} -types = [("bar", "Bar"), ("line", "Line")] -selected_type = types[0] + types = [("bar", "Bar"), ("line", "Line")] + selected_type = types[0] -page = """ + page = """ <|{data}|chart|type={selected_type[0]}|x=X|y=Y|rebuild|> <|{selected_type}|toggle|lov={types}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/filled-area-normalized.py b/doc/gui/examples/charts/filled-area-normalized.py index bfb37f83c2..0d36811041 100644 --- a/doc/gui/examples/charts/filled-area-normalized.py +++ b/doc/gui/examples/charts/filled-area-normalized.py @@ -15,47 +15,48 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -data = { - "Products": [ - "Nail polish", - "Eyebrow pencil", - "Rouge", - "Lipstick", - "Eyeshadows", - "Eyeliner", - "Foundation", - "Lip gloss", - "Mascara", - ], - "USA": [12814, 13012, 11624, 8814, 12998, 12321, 10342, 22998, 11261], - "China": [3054, 5067, 7004, 9054, 12043, 15067, 10119, 12043, 10419], - "EU": [4376, 3987, 3574, 4376, 4572, 3417, 5231, 4572, 6134], - "Africa": [4229, 3932, 5221, 9256, 3308, 5432, 13701, 4008, 18712], -} +if __name__ == "__main__": + data = { + "Products": [ + "Nail polish", + "Eyebrow pencil", + "Rouge", + "Lipstick", + "Eyeshadows", + "Eyeliner", + "Foundation", + "Lip gloss", + "Mascara", + ], + "USA": [12814, 13012, 11624, 8814, 12998, 12321, 10342, 22998, 11261], + "China": [3054, 5067, 7004, 9054, 12043, 15067, 10119, 12043, 10419], + "EU": [4376, 3987, 3574, 4376, 4572, 3417, 5231, 4572, 6134], + "Africa": [4229, 3932, 5221, 9256, 3308, 5432, 13701, 4008, 18712], + } -# Order the different traces -ys = ["USA", "China", "EU", "Africa"] + # Order the different traces + ys = ["USA", "China", "EU", "Africa"] -options = [ - # For the USA - {"stackgroup": "one", "groupnorm": "percent"}, - # For China - {"stackgroup": "one"}, - # For the EU - {"stackgroup": "one"}, - # For Africa - {"stackgroup": "one"}, -] + options = [ + # For the USA + {"stackgroup": "one", "groupnorm": "percent"}, + # For China + {"stackgroup": "one"}, + # For the EU + {"stackgroup": "one"}, + # For Africa + {"stackgroup": "one"}, + ] -layout = { - # Show all values when hovering on a data point - "hovermode": "x unified" -} + layout = { + # Show all values when hovering on a data point + "hovermode": "x unified" + } -page = """ + page = """ # Filled Area - Stacked Normalized <|{data}|chart|mode=none|x=Products|y={ys}|options={options}|layout={layout}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/filled-area-overlay.py b/doc/gui/examples/charts/filled-area-overlay.py index c36ad22928..cd3c550fca 100644 --- a/doc/gui/examples/charts/filled-area-overlay.py +++ b/doc/gui/examples/charts/filled-area-overlay.py @@ -15,24 +15,25 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -data = { - "Day": ["Mon", "Tue", "Wed", "Thu", "Fri"], - "Items": [32, 25, 86, 60, 70], - "Price": [80, 50, 140, 10, 70], -} +if __name__ == "__main__": + data = { + "Day": ["Mon", "Tue", "Wed", "Thu", "Fri"], + "Items": [32, 25, 86, 60, 70], + "Price": [80, 50, 140, 10, 70], + } -options = [ - # For items - {"fill": "tozeroy"}, - # For price - # Using "tonexty" not to cover the first trace - {"fill": "tonexty"}, -] + options = [ + # For items + {"fill": "tozeroy"}, + # For price + # Using "tonexty" not to cover the first trace + {"fill": "tonexty"}, + ] -page = """ + page = """ # Filled Area - Overlay <|{data}|chart|mode=none|x=Day|y[1]=Items|y[2]=Price|options={options}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/filled-area-simple.py b/doc/gui/examples/charts/filled-area-simple.py index 6dabe22514..6e2d6e3336 100644 --- a/doc/gui/examples/charts/filled-area-simple.py +++ b/doc/gui/examples/charts/filled-area-simple.py @@ -15,20 +15,21 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -data = { - "Day": ["Mon", "Tue", "Wed", "Thu", "Fri"], - "Items": [32, 25, 86, 60, 70], -} +if __name__ == "__main__": + data = { + "Day": ["Mon", "Tue", "Wed", "Thu", "Fri"], + "Items": [32, 25, 86, 60, 70], + } -options = { - # Fill to x axis - "fill": "tozeroy" -} + options = { + # Fill to x axis + "fill": "tozeroy" + } -page = """ + page = """ # Filled Area - Simple <|{data}|chart|x=Day|y=Items|options={options}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/filled-area-stacked.py b/doc/gui/examples/charts/filled-area-stacked.py index acee01dae1..234a247ece 100644 --- a/doc/gui/examples/charts/filled-area-stacked.py +++ b/doc/gui/examples/charts/filled-area-stacked.py @@ -15,25 +15,26 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -data = { - "Month": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], - "Milk": [80, 85, 95, 120, 140, 130, 145, 150, 120, 100, 90, 110], - "Bread": [100, 90, 85, 90, 100, 110, 105, 95, 100, 110, 120, 125], - "Apples": [50, 65, 70, 65, 70, 75, 85, 70, 60, 65, 70, 80], -} +if __name__ == "__main__": + data = { + "Month": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], + "Milk": [80, 85, 95, 120, 140, 130, 145, 150, 120, 100, 90, 110], + "Bread": [100, 90, 85, 90, 100, 110, 105, 95, 100, 110, 120, 125], + "Apples": [50, 65, 70, 65, 70, 75, 85, 70, 60, 65, 70, 80], + } -# Name of the three sets to trace -items = ["Milk", "Bread", "Apples"] + # Name of the three sets to trace + items = ["Milk", "Bread", "Apples"] -options = { - # Group all traces in the same stack group - "stackgroup": "first_group" -} + options = { + # Group all traces in the same stack group + "stackgroup": "first_group" + } -page = """ + page = """ # Filled Area - Stacked <|{data}|chart|mode=none|x=Month|y={items}|options={options}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/funnel-area-multiple.py b/doc/gui/examples/charts/funnel-area-multiple.py index 0a6ab2be80..b6aad0f9cc 100644 --- a/doc/gui/examples/charts/funnel-area-multiple.py +++ b/doc/gui/examples/charts/funnel-area-multiple.py @@ -15,79 +15,80 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -data = { - "John_us": [500, 450, 340, 230, 220, 110], - "John_eu": [600, 500, 400, 300, 200, 100], - "Robert_us": [510, 480, 440, 330, 220, 100], - "Robert_eu": [360, 250, 240, 130, 120, 60], -} +if __name__ == "__main__": + data = { + "John_us": [500, 450, 340, 230, 220, 110], + "John_eu": [600, 500, 400, 300, 200, 100], + "Robert_us": [510, 480, 440, 330, 220, 100], + "Robert_eu": [360, 250, 240, 130, 120, 60], + } -# Values for each trace -values = ["John_us", "John_eu", "Robert_us", "Robert_eu"] + # Values for each trace + values = ["John_us", "John_eu", "Robert_us", "Robert_eu"] -options = [ - # For John/US - { - "scalegroup": "first", - "textinfo": "value", - "title": { - # "position": "top", - "text": "John in the U.S." + options = [ + # For John/US + { + "scalegroup": "first", + "textinfo": "value", + "title": { + # "position": "top", + "text": "John in the U.S." + }, + # Lower-left corner + "domain": {"x": [0, 0.5], "y": [0, 0.5]}, }, - # Lower-left corner - "domain": {"x": [0, 0.5], "y": [0, 0.5]}, - }, - # For John/EU - { - "scalegroup": "first", - "textinfo": "value", - "title": { - # "position": "top", - "text": "John in the E.U." + # For John/EU + { + "scalegroup": "first", + "textinfo": "value", + "title": { + # "position": "top", + "text": "John in the E.U." + }, + # Upper-left corner + "domain": {"x": [0, 0.5], "y": [0.55, 1]}, }, - # Upper-left corner - "domain": {"x": [0, 0.5], "y": [0.55, 1]}, - }, - # For Robert/US - { - "scalegroup": "second", - "textinfo": "value", - "title": { - # "position": "top", - "text": "Robert in the U.S." + # For Robert/US + { + "scalegroup": "second", + "textinfo": "value", + "title": { + # "position": "top", + "text": "Robert in the U.S." + }, + # Lower-right corner + "domain": {"x": [0.51, 1], "y": [0, 0.5]}, }, - # Lower-right corner - "domain": {"x": [0.51, 1], "y": [0, 0.5]}, - }, - # For Robert/EU - { - "scalegroup": "second", - "textinfo": "value", - "title": { - # "position": "top", - "text": "Robert in the E.U." + # For Robert/EU + { + "scalegroup": "second", + "textinfo": "value", + "title": { + # "position": "top", + "text": "Robert in the E.U." + }, + # Upper-right corner + "domain": {"x": [0.51, 1], "y": [0.51, 1]}, }, - # Upper-right corner - "domain": {"x": [0.51, 1], "y": [0.51, 1]}, - }, -] + ] -layout = { - "title": "Sales per Salesman per Region", - "showlegend": False, - # Draw frames around each trace - "shapes": [ - {"x0": 0, "x1": 0.5, "y0": 0, "y1": 0.5}, - {"x0": 0, "x1": 0.5, "y0": 0.52, "y1": 1}, - {"x0": 0.52, "x1": 1, "y0": 0, "y1": 0.5}, - {"x0": 0.52, "x1": 1, "y0": 0.52, "y1": 1}, - ], -} + layout = { + "title": "Sales per Salesman per Region", + "showlegend": False, + # Draw frames around each trace + "shapes": [ + {"x0": 0, "x1": 0.5, "y0": 0, "y1": 0.5}, + {"x0": 0, "x1": 0.5, "y0": 0.52, "y1": 1}, + {"x0": 0.52, "x1": 1, "y0": 0, "y1": 0.5}, + {"x0": 0.52, "x1": 1, "y0": 0.52, "y1": 1}, + ], + } -page = """ + page = """ # Funnel Area - Multiple Charts <|{data}|chart|type=funnelarea|values={values}|options={options}|layout={layout}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/funnel-area.py b/doc/gui/examples/charts/funnel-area.py index 426bf61828..0654699036 100644 --- a/doc/gui/examples/charts/funnel-area.py +++ b/doc/gui/examples/charts/funnel-area.py @@ -15,19 +15,23 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -data = {"Types": ["Visits", "Downloads", "Prospects", "Invoiced", "Closed"], "Visits": [13873, 10533, 5443, 2703, 908]} +if __name__ == "__main__": + data = { + "Types": ["Visits", "Downloads", "Prospects", "Invoiced", "Closed"], + "Visits": [13873, 10533, 5443, 2703, 908], + } -layout = { - # Stack the areas - "funnelmode": "stack", - # Hide the legend - "showlegend": False, -} + layout = { + # Stack the areas + "funnelmode": "stack", + # Hide the legend + "showlegend": False, + } -page = """ + page = """ # Funnel - Area <|{data}|chart|type=funnelarea|values=Visits|text=Types|layout={layout}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/funnel-multiple.py b/doc/gui/examples/charts/funnel-multiple.py index 809ff11d5f..3a9f5dadbe 100644 --- a/doc/gui/examples/charts/funnel-multiple.py +++ b/doc/gui/examples/charts/funnel-multiple.py @@ -15,23 +15,24 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -data = { - "Types": ["Website visit", "Downloads", "Prospects", "Invoice sent", "Closed"], - "Visits_us": [13873, 10533, 5443, 2703, 908], - "Visits_eu": [7063, 4533, 3443, 1003, 1208], - "Visits_ap": [6873, 2533, 3443, 1703, 508], -} +if __name__ == "__main__": + data = { + "Types": ["Website visit", "Downloads", "Prospects", "Invoice sent", "Closed"], + "Visits_us": [13873, 10533, 5443, 2703, 908], + "Visits_eu": [7063, 4533, 3443, 1003, 1208], + "Visits_ap": [6873, 2533, 3443, 1703, 508], + } -# Columns for each trace -x = ["Visits_us", "Visits_eu", "Visits_ap"] + # Columns for each trace + x = ["Visits_us", "Visits_eu", "Visits_ap"] -# Legend text for each trace -names = ["US", "EU", "AP"] + # Legend text for each trace + names = ["US", "EU", "AP"] -page = """ + page = """ # Funnel - Multiple traces <|{data}|chart|type=funnel|x={x}|y=Types|name={names}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/funnel-simple.py b/doc/gui/examples/charts/funnel-simple.py index 22d8c33ff4..0066ab6c7e 100644 --- a/doc/gui/examples/charts/funnel-simple.py +++ b/doc/gui/examples/charts/funnel-simple.py @@ -15,13 +15,14 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -# Data set -data = {"Opps": ["Hot leads", "Doc sent", "Quote", "Closed Won"], "Visits": [316, 238, 125, 83]} +if __name__ == "__main__": + # Data set + data = {"Opps": ["Hot leads", "Doc sent", "Quote", "Closed Won"], "Visits": [316, 238, 125, 83]} -page = """ + page = """ # Funnel Chart - Simple <|{data}|chart|type=funnel|x=Visits|y=Opps|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/funnel-styling.py b/doc/gui/examples/charts/funnel-styling.py index a8bb0e9bb1..418169e1e5 100644 --- a/doc/gui/examples/charts/funnel-styling.py +++ b/doc/gui/examples/charts/funnel-styling.py @@ -15,27 +15,28 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -data = { - "Types": ["Website visit", "Downloads", "Prospects", "Invoice sent", "Closed"], - "Visits": [13873, 10533, 5443, 2703, 908], -} +if __name__ == "__main__": + data = { + "Types": ["Website visit", "Downloads", "Prospects", "Invoice sent", "Closed"], + "Visits": [13873, 10533, 5443, 2703, 908], + } -marker = { - # Boxes are filled with a blue gradient color - "color": ["hsl(210,50%,50%)", "hsl(210,60%,60%)", "hsl(210,70%,70%)", "hsl(210,80%,80%)", "hsl(210,90%,90%)"], - # Lines get thicker, with an orange-to-green gradient color - "line": {"width": [1, 1, 2, 3, 4], "color": ["f5720a", "f39c1d", "f0cc3d", "aadb12", "8cb709"]}, -} + marker = { + # Boxes are filled with a blue gradient color + "color": ["hsl(210,50%,50%)", "hsl(210,60%,60%)", "hsl(210,70%,70%)", "hsl(210,80%,80%)", "hsl(210,90%,90%)"], + # Lines get thicker, with an orange-to-green gradient color + "line": {"width": [1, 1, 2, 3, 4], "color": ["f5720a", "f39c1d", "f0cc3d", "aadb12", "8cb709"]}, + } -options = { - # Lines connecting boxes are thick, dotted and green - "connector": {"line": {"color": "green", "dash": "dot", "width": 4}} -} + options = { + # Lines connecting boxes are thick, dotted and green + "connector": {"line": {"color": "green", "dash": "dot", "width": 4}} + } -page = """ + page = """ # Funnel Chart - Custom markers <|{data}|chart|type=funnel|x=Visits|y=Types|marker={marker}|options={options}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/gantt-simple.py b/doc/gui/examples/charts/gantt-simple.py index af9dadee5b..017a1c7d33 100644 --- a/doc/gui/examples/charts/gantt-simple.py +++ b/doc/gui/examples/charts/gantt-simple.py @@ -17,42 +17,43 @@ from taipy.gui import Gui -# Tasks definitions -tasks = ["Plan", "Research", "Design", "Implement", "Test", "Deliver"] -# Task durations, in days -durations = [50, 30, 30, 40, 15, 10] -# Planned start dates of tasks -start_dates = [ - datetime.date(2022, 10, 15), # Plan - datetime.date(2022, 11, 7), # Research - datetime.date(2022, 12, 1), # Design - datetime.date(2022, 12, 20), # Implement - datetime.date(2023, 1, 15), # Test - datetime.date(2023, 2, 1), # Deliver -] - -epoch = datetime.date(1970, 1, 1) - -data = { - "start": start_dates, - "Task": tasks, - # Compute the time span as adatetime (relative to January 1st, 1970) - "Date": [epoch + datetime.timedelta(days=duration) for duration in durations], -} - -layout = { - "yaxis": { - # Sort tasks from top to bottom - "autorange": "reversed", - # Remove title - "title": {"text": ""}, - }, -} - -page = """ +if __name__ == "__main__": + # Tasks definitions + tasks = ["Plan", "Research", "Design", "Implement", "Test", "Deliver"] + # Task durations, in days + durations = [50, 30, 30, 40, 15, 10] + # Planned start dates of tasks + start_dates = [ + datetime.date(2022, 10, 15), # Plan + datetime.date(2022, 11, 7), # Research + datetime.date(2022, 12, 1), # Design + datetime.date(2022, 12, 20), # Implement + datetime.date(2023, 1, 15), # Test + datetime.date(2023, 2, 1), # Deliver + ] + + epoch = datetime.date(1970, 1, 1) + + data = { + "start": start_dates, + "Task": tasks, + # Compute the time span as adatetime (relative to January 1st, 1970) + "Date": [epoch + datetime.timedelta(days=duration) for duration in durations], + } + + layout = { + "yaxis": { + # Sort tasks from top to bottom + "autorange": "reversed", + # Remove title + "title": {"text": ""}, + }, + } + + page = """ # Gantt - Simple <|{data}|chart|type=bar|orientation=h|y=Task|x=Date|base=start|layout={layout}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/heatmap-annotated.py b/doc/gui/examples/charts/heatmap-annotated.py index 3b12399fc1..4427594f0d 100644 --- a/doc/gui/examples/charts/heatmap-annotated.py +++ b/doc/gui/examples/charts/heatmap-annotated.py @@ -17,56 +17,57 @@ from taipy.gui import Gui -data: Dict[str, List] = { - "Temperatures": [ - [17.2, 27.4, 28.6, 21.5], - [5.6, 15.1, 20.2, 8.1], - [26.6, 22.8, 21.8, 24.0], - [22.3, 15.5, 13.4, 19.6], - ], - "Cities": ["Hanoi", "Paris", "Rio", "Sydney"], - "Seasons": ["Winter", "Spring", "Summer", "Autumn"], -} +if __name__ == "__main__": + data: Dict[str, List] = { + "Temperatures": [ + [17.2, 27.4, 28.6, 21.5], + [5.6, 15.1, 20.2, 8.1], + [26.6, 22.8, 21.8, 24.0], + [22.3, 15.5, 13.4, 19.6], + ], + "Cities": ["Hanoi", "Paris", "Rio", "Sydney"], + "Seasons": ["Winter", "Spring", "Summer", "Autumn"], + } -layout = { - # This array contains the information we want to display in the cells - # These are filled later - "annotations": [], - # No ticks on the x axis, show labels on top the of the chart - "xaxis": {"ticks": "", "side": "top"}, - # No ticks on the y axis - # Add a space character for a small margin with the text - "yaxis": {"ticks": "", "ticksuffix": " "}, -} + layout = { + # This array contains the information we want to display in the cells + # These are filled later + "annotations": [], + # No ticks on the x axis, show labels on top the of the chart + "xaxis": {"ticks": "", "side": "top"}, + # No ticks on the y axis + # Add a space character for a small margin with the text + "yaxis": {"ticks": "", "ticksuffix": " "}, + } -seasons = data["Seasons"] -cities = data["Cities"] -# Iterate over all cities -for city in range(len(cities)): - # Iterate over all seasons - for season in range(len(seasons)): - temperature = data["Temperatures"][city][season] - # Create the annotation - annotation = { - # The name of the season - "x": seasons[season], - # The name of the city - "y": cities[city], - # The temperature, as a formatted string - "text": f"{temperature}\N{DEGREE SIGN}C", - # Change the text color depending on the temperature - # so it results in a better contrast - "font": {"color": "white" if temperature < 14 else "black"}, - # Remove the annotation arrow - "showarrow": False, - } - # Add the annotation to the layout's annotations array - layout["annotations"].append(annotation) # type: ignore[attr-defined] + seasons = data["Seasons"] + cities = data["Cities"] + # Iterate over all cities + for city in range(len(cities)): + # Iterate over all seasons + for season in range(len(seasons)): + temperature = data["Temperatures"][city][season] + # Create the annotation + annotation = { + # The name of the season + "x": seasons[season], + # The name of the city + "y": cities[city], + # The temperature, as a formatted string + "text": f"{temperature}\N{DEGREE SIGN}C", + # Change the text color depending on the temperature + # so it results in a better contrast + "font": {"color": "white" if temperature < 14 else "black"}, + # Remove the annotation arrow + "showarrow": False, + } + # Add the annotation to the layout's annotations array + layout["annotations"].append(annotation) # type: ignore[attr-defined] -page = """ + page = """ ## Heatmap - Annotated <|{data}|chart|type=heatmap|z=Temperatures|x=Seasons|y=Cities|layout={layout}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/heatmap-colorscale.py b/doc/gui/examples/charts/heatmap-colorscale.py index 973d035bf1..579187ef15 100644 --- a/doc/gui/examples/charts/heatmap-colorscale.py +++ b/doc/gui/examples/charts/heatmap-colorscale.py @@ -15,23 +15,24 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -data = { - "Temperatures": [ - [17.2, 27.4, 28.6, 21.5], - [5.6, 15.1, 20.2, 8.1], - [26.6, 22.8, 21.8, 24.0], - [22.3, 15.5, 13.4, 19.6], - ], - "Cities": ["Hanoi", "Paris", "Rio", "Sydney"], - "Seasons": ["Winter", "Spring", "Summer", "Autumn"], -} +if __name__ == "__main__": + data = { + "Temperatures": [ + [17.2, 27.4, 28.6, 21.5], + [5.6, 15.1, 20.2, 8.1], + [26.6, 22.8, 21.8, 24.0], + [22.3, 15.5, 13.4, 19.6], + ], + "Cities": ["Hanoi", "Paris", "Rio", "Sydney"], + "Seasons": ["Winter", "Spring", "Summer", "Autumn"], + } -options = {"colorscale": "Portland"} + options = {"colorscale": "Portland"} -page = """ + page = """ # Heatmap - Colorscale <|{data}|chart|type=heatmap|z=Temperatures|x=Seasons|y=Cities|options={options}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/heatmap-drawing-on-top.py b/doc/gui/examples/charts/heatmap-drawing-on-top.py index af70d2fcf4..9a54903922 100644 --- a/doc/gui/examples/charts/heatmap-drawing-on-top.py +++ b/doc/gui/examples/charts/heatmap-drawing-on-top.py @@ -26,66 +26,67 @@ def spiral(th): return (r * numpy.cos(th), r * numpy.sin(th)) -# Prepare Golden spiral data as a parametric curve -(x, y) = spiral(numpy.linspace(-numpy.pi / 13, 4 * numpy.pi, 1000)) +if __name__ == "__main__": + # Prepare Golden spiral data as a parametric curve + (x, y) = spiral(numpy.linspace(-numpy.pi / 13, 4 * numpy.pi, 1000)) -# Prepare the heatmap x and y cell sizes along the axes -golden_ratio = (1 + numpy.sqrt(5)) / 2.0 # Golden ratio -grid_x = [0, 1, 1 + (1 / (golden_ratio**4)), 1 + (1 / (golden_ratio**3)), golden_ratio] -grid_y = [ - 0, - 1 / (golden_ratio**3), - 1 / golden_ratio**3 + 1 / golden_ratio**4, - 1 / (golden_ratio**2), - 1, -] + # Prepare the heatmap x and y cell sizes along the axes + golden_ratio = (1 + numpy.sqrt(5)) / 2.0 # Golden ratio + grid_x = [0, 1, 1 + (1 / (golden_ratio**4)), 1 + (1 / (golden_ratio**3)), golden_ratio] + grid_y = [ + 0, + 1 / (golden_ratio**3), + 1 / golden_ratio**3 + 1 / golden_ratio**4, + 1 / (golden_ratio**2), + 1, + ] -# Main value is based on the Fibonacci sequence -z = [[13, 3, 3, 5], [13, 2, 1, 5], [13, 10, 11, 12], [13, 8, 8, 8]] + # Main value is based on the Fibonacci sequence + z = [[13, 3, 3, 5], [13, 2, 1, 5], [13, 10, 11, 12], [13, 8, 8, 8]] -# Group all data sets in a single array -data = [ - { - "z": z, - }, - {"x": numpy.sort(grid_x), "y": numpy.sort(grid_y)}, - { - "xSpiral": -x + x[0], - "ySpiral": y - y[0], - }, -] + # Group all data sets in a single array + data = [ + { + "z": z, + }, + {"x": numpy.sort(grid_x), "y": numpy.sort(grid_y)}, + { + "xSpiral": -x + x[0], + "ySpiral": y - y[0], + }, + ] -# Axis template: hide all ticks, lines and labels -axis = { - "range": [0, 2.0], - "showgrid": False, - "zeroline": False, - "showticklabels": False, - "ticks": "", - "title": "", -} + # Axis template: hide all ticks, lines and labels + axis = { + "range": [0, 2.0], + "showgrid": False, + "zeroline": False, + "showticklabels": False, + "ticks": "", + "title": "", + } -layout = { - # Use the axis template for both x and y axes - "xaxis": axis, - "yaxis": axis, -} + layout = { + # Use the axis template for both x and y axes + "xaxis": axis, + "yaxis": axis, + } -options = { - # Hide the color scale of the heatmap - "showscale": False -} + options = { + # Hide the color scale of the heatmap + "showscale": False + } -# Chart holds two traces, with different types -types = ["heatmap", "scatter"] -# x and y values for both traces -xs = ["1/x", "2/xSpiral"] -ys = ["1/y", "2/ySpiral"] + # Chart holds two traces, with different types + types = ["heatmap", "scatter"] + # x and y values for both traces + xs = ["1/x", "2/xSpiral"] + ys = ["1/y", "2/ySpiral"] -page = """ + page = """ ## Heatmap - Drawing on top <|{data}|chart|type={types}|z[1]=0/z|x={xs}|y={ys}|layout={layout}|options={options}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/heatmap-simple.py b/doc/gui/examples/charts/heatmap-simple.py index 3d7b9f1540..b780e95904 100644 --- a/doc/gui/examples/charts/heatmap-simple.py +++ b/doc/gui/examples/charts/heatmap-simple.py @@ -15,21 +15,22 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -data = { - "Temperatures": [ - [17.2, 27.4, 28.6, 21.5], - [5.6, 15.1, 20.2, 8.1], - [26.6, 22.8, 21.8, 24.0], - [22.3, 15.5, 13.4, 19.6], - ], - "Cities": ["Hanoi", "Paris", "Rio", "Sydney"], - "Seasons": ["Winter", "Spring", "Summer", "Autumn"], -} +if __name__ == "__main__": + data = { + "Temperatures": [ + [17.2, 27.4, 28.6, 21.5], + [5.6, 15.1, 20.2, 8.1], + [26.6, 22.8, 21.8, 24.0], + [22.3, 15.5, 13.4, 19.6], + ], + "Cities": ["Hanoi", "Paris", "Rio", "Sydney"], + "Seasons": ["Winter", "Spring", "Summer", "Autumn"], + } -page = """ + page = """ # Heatmap - Basic <|{data}|chart|type=heatmap|z=Temperatures|x=Seasons|y=Cities|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/heatmap-unbalanced.py b/doc/gui/examples/charts/heatmap-unbalanced.py index a6323f864a..a6ea7b17d9 100644 --- a/doc/gui/examples/charts/heatmap-unbalanced.py +++ b/doc/gui/examples/charts/heatmap-unbalanced.py @@ -15,24 +15,25 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -data = [ - { - "Temperatures": [ - [17.2, 27.4, 28.6, 21.5], - [5.6, 15.1, 20.2, 8.1], - [26.6, 22.8, 21.8, 24.0], - [22.3, 15.5, 13.4, 19.6], - [3.9, 18.9, 25.7, 9.8], - ], - "Cities": ["Hanoi", "Paris", "Rio", "Sydney", "Washington"], - }, - {"Seasons": ["Winter", "Spring", "Summer", "Autumn"]}, -] +if __name__ == "__main__": + data = [ + { + "Temperatures": [ + [17.2, 27.4, 28.6, 21.5], + [5.6, 15.1, 20.2, 8.1], + [26.6, 22.8, 21.8, 24.0], + [22.3, 15.5, 13.4, 19.6], + [3.9, 18.9, 25.7, 9.8], + ], + "Cities": ["Hanoi", "Paris", "Rio", "Sydney", "Washington"], + }, + {"Seasons": ["Winter", "Spring", "Summer", "Autumn"]}, + ] -page = """ + page = """ # Heatmap - Unbalanced <|{data}|chart|type=heatmap|z=0/Temperatures|x=1/Seasons|y=0/Cities|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/heatmap-unequal-cell-sizes.py b/doc/gui/examples/charts/heatmap-unequal-cell-sizes.py index e10c2774fe..69a9b1f5d9 100644 --- a/doc/gui/examples/charts/heatmap-unequal-cell-sizes.py +++ b/doc/gui/examples/charts/heatmap-unequal-cell-sizes.py @@ -19,47 +19,48 @@ from taipy.gui import Gui -grid_size = 10 -data = [ - { - # z is set to: - # - 0 if row+col is a multiple of 4 - # - 1 if row+col is a multiple of 2 - # - 0.5 otherwise - "z": [ - [0.0 if (row + col) % 4 == 0 else 1 if (row + col) % 2 == 0 else 0.5 for col in range(grid_size)] - for row in range(grid_size) - ] - }, - { - # A series of coordinates, growing exponentially - "x": [0] + list(accumulate(np.logspace(0, 1, grid_size))), - # A series of coordinates, shrinking exponentially - "y": [0] + list(accumulate(np.logspace(1, 0, grid_size))), - }, -] +if __name__ == "__main__": + grid_size = 10 + data = [ + { + # z is set to: + # - 0 if row+col is a multiple of 4 + # - 1 if row+col is a multiple of 2 + # - 0.5 otherwise + "z": [ + [0.0 if (row + col) % 4 == 0 else 1 if (row + col) % 2 == 0 else 0.5 for col in range(grid_size)] + for row in range(grid_size) + ] + }, + { + # A series of coordinates, growing exponentially + "x": [0] + list(accumulate(np.logspace(0, 1, grid_size))), + # A series of coordinates, shrinking exponentially + "y": [0] + list(accumulate(np.logspace(1, 0, grid_size))), + }, + ] -# Axis template used in the layout object -axis_template = { - # Don't show any line or tick or label - "showgrid": False, - "zeroline": False, - "ticks": "", - "showticklabels": False, - "visible": False, -} + # Axis template used in the layout object + axis_template = { + # Don't show any line or tick or label + "showgrid": False, + "zeroline": False, + "ticks": "", + "showticklabels": False, + "visible": False, + } -layout = {"xaxis": axis_template, "yaxis": axis_template} + layout = {"xaxis": axis_template, "yaxis": axis_template} -options = { - # Remove the color scale display - "showscale": False -} + options = { + # Remove the color scale display + "showscale": False + } -page = """ + page = """ ## Heatmap - Unequal block sizes <|{data}|chart|type=heatmap|z=0/z|x=1/x|y=1/y|layout={layout}|options={options}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/histogram-binning-function.py b/doc/gui/examples/charts/histogram-binning-function.py index 9e479ada6b..a5ce5f37ff 100644 --- a/doc/gui/examples/charts/histogram-binning-function.py +++ b/doc/gui/examples/charts/histogram-binning-function.py @@ -15,41 +15,42 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -# Initial data set. y = count_of(x) -samples = {"x": ["Apples", "Apples", "Apples", "Oranges", "Bananas", "Oranges"], "y": [5, 10, 3, 8, 5, 2]} +if __name__ == "__main__": + # Initial data set. y = count_of(x) + samples = {"x": ["Apples", "Apples", "Apples", "Oranges", "Bananas", "Oranges"], "y": [5, 10, 3, 8, 5, 2]} -# Create a data set array to allow for two traces -data = [samples, samples] + # Create a data set array to allow for two traces + data = [samples, samples] -# Gather those settings in a single dictionary -properties = { - # 'x' of the first trace is the 'x' data from the first element of data - "x[1]": "0/x", - # 'y' of the first trace is the 'y' data from the first element of data - "y[1]": "0/y", - # 'x' of the second trace is the 'x' data from the second element of data - "x[2]": "1/x", - # 'y' of the second trace is the 'y' data from the second element of data - "y[2]": "1/y", - # Data set colors - "color": ["#cd5c5c", "#505070"], - # Data set names (for the legend) - "name": ["Count", "Sum"], - # Configure the binning functions - "options": [ - # First trace: count the bins - {"histfunc": "count"}, - # Second trace: sum the bin occurrences - {"histfunc": "sum"}, - ], - # Set x axis name - "layout": {"xaxis": {"title": "Fruit"}}, -} + # Gather those settings in a single dictionary + properties = { + # 'x' of the first trace is the 'x' data from the first element of data + "x[1]": "0/x", + # 'y' of the first trace is the 'y' data from the first element of data + "y[1]": "0/y", + # 'x' of the second trace is the 'x' data from the second element of data + "x[2]": "1/x", + # 'y' of the second trace is the 'y' data from the second element of data + "y[2]": "1/y", + # Data set colors + "color": ["#cd5c5c", "#505070"], + # Data set names (for the legend) + "name": ["Count", "Sum"], + # Configure the binning functions + "options": [ + # First trace: count the bins + {"histfunc": "count"}, + # Second trace: sum the bin occurrences + {"histfunc": "sum"}, + ], + # Set x axis name + "layout": {"xaxis": {"title": "Fruit"}}, + } -page = """ + page = """ # Histogram - Binning function <|{data}|chart|type=histogram|properties={properties}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/histogram-cumulative.py b/doc/gui/examples/charts/histogram-cumulative.py index 84a5db5119..a8c8bcebc7 100644 --- a/doc/gui/examples/charts/histogram-cumulative.py +++ b/doc/gui/examples/charts/histogram-cumulative.py @@ -17,18 +17,19 @@ from taipy.gui import Gui -# Random data set -data = [random.random() for _ in range(500)] +if __name__ == "__main__": + # Random data set + data = [random.random() for _ in range(500)] -options = { - # Enable the cumulative histogram - "cumulative": {"enabled": True} -} + options = { + # Enable the cumulative histogram + "cumulative": {"enabled": True} + } -page = """ + page = """ # Histogram - Cumulative <|{data}|chart|type=histogram|options={options}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/histogram-horizontal.py b/doc/gui/examples/charts/histogram-horizontal.py index eb705dd976..a59546dc22 100644 --- a/doc/gui/examples/charts/histogram-horizontal.py +++ b/doc/gui/examples/charts/histogram-horizontal.py @@ -17,13 +17,14 @@ from taipy.gui import Gui -# Random data set -data = {"Count": [random.random() for _ in range(100)]} +if __name__ == "__main__": + # Random data set + data = {"Count": [random.random() for _ in range(100)]} -page = """ + page = """ # Histograms - Horizontal <|{data}|chart|type=histogram|y=Count|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/histogram-nbins.py b/doc/gui/examples/charts/histogram-nbins.py index 52e2925c70..683b84b540 100644 --- a/doc/gui/examples/charts/histogram-nbins.py +++ b/doc/gui/examples/charts/histogram-nbins.py @@ -17,29 +17,30 @@ from taipy.gui import Gui -# Random set of 100 samples -samples = {"x": [random.gauss(mu=0.0, sigma=1.0) for _ in range(100)]} +if __name__ == "__main__": + # Random set of 100 samples + samples = {"x": [random.gauss(mu=0.0, sigma=1.0) for _ in range(100)]} -# Use the same data for both traces -data = [samples, samples] + # Use the same data for both traces + data = [samples, samples] -options = [ - # First data set displayed as green-ish, and 5 bins - {"marker": {"color": "#4A4"}, "nbinsx": 5}, - # Second data set displayed as red-ish, and 25 bins - {"marker": {"color": "#A33"}, "nbinsx": 25}, -] + options = [ + # First data set displayed as green-ish, and 5 bins + {"marker": {"color": "#4A4"}, "nbinsx": 5}, + # Second data set displayed as red-ish, and 25 bins + {"marker": {"color": "#A33"}, "nbinsx": 25}, + ] -layout = { - # Overlay the two histograms - "barmode": "overlay", - # Hide the legend - "showlegend": False, -} + layout = { + # Overlay the two histograms + "barmode": "overlay", + # Hide the legend + "showlegend": False, + } -page = """ + page = """ # Histogram - NBins <|{data}|chart|type=histogram|options={options}|layout={layout}|> -""" -Gui(page).run() + """ + Gui(page).run() diff --git a/doc/gui/examples/charts/histogram-normalized.py b/doc/gui/examples/charts/histogram-normalized.py index 1b8f737f1d..198f4442a2 100644 --- a/doc/gui/examples/charts/histogram-normalized.py +++ b/doc/gui/examples/charts/histogram-normalized.py @@ -17,16 +17,17 @@ from taipy.gui import Gui -# Random data set -data = [random.random() for _ in range(100)] +if __name__ == "__main__": + # Random data set + data = [random.random() for _ in range(100)] -# Normalize to show bin probabilities -options = {"histnorm": "probability"} + # Normalize to show bin probabilities + options = {"histnorm": "probability"} -page = """ + page = """ # Histogram - Normalized <|{data}|chart|type=histogram|options={options}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/histogram-overlay.py b/doc/gui/examples/charts/histogram-overlay.py index 8d41f6ce67..71fb6eec11 100644 --- a/doc/gui/examples/charts/histogram-overlay.py +++ b/doc/gui/examples/charts/histogram-overlay.py @@ -17,26 +17,27 @@ from taipy.gui import Gui -# Data set made of two series of random numbers -data = [{"x": [random.random() + 1 for _ in range(100)]}, {"x": [random.random() + 1.1 for _ in range(100)]}] +if __name__ == "__main__": + # Data set made of two series of random numbers + data = [{"x": [random.random() + 1 for _ in range(100)]}, {"x": [random.random() + 1.1 for _ in range(100)]}] -options = [ - # First data set displayed as semi-transparent, green bars - {"opacity": 0.5, "marker": {"color": "green"}}, - # Second data set displayed as semi-transparent, gray bars - {"opacity": 0.5, "marker": {"color": "#888"}}, -] + options = [ + # First data set displayed as semi-transparent, green bars + {"opacity": 0.5, "marker": {"color": "green"}}, + # Second data set displayed as semi-transparent, gray bars + {"opacity": 0.5, "marker": {"color": "#888"}}, + ] -layout = { - # Overlay the two histograms - "barmode": "overlay", - # Hide the legend - "showlegend": False, -} + layout = { + # Overlay the two histograms + "barmode": "overlay", + # Hide the legend + "showlegend": False, + } -page = """ + page = """ # Histogram - Overlay <|{data}|chart|type=histogram|options={options}|layout={layout}|> -""" -Gui(page).run() + """ + Gui(page).run() diff --git a/doc/gui/examples/charts/histogram-simple.py b/doc/gui/examples/charts/histogram-simple.py index f26c01f7d8..7c2d9fc37b 100644 --- a/doc/gui/examples/charts/histogram-simple.py +++ b/doc/gui/examples/charts/histogram-simple.py @@ -17,13 +17,14 @@ from taipy import Gui -# Random data set -data = [random.gauss(0, 5) for _ in range(1000)] +if __name__ == "__main__": + # Random data set + data = [random.gauss(0, 5) for _ in range(1000)] -page = """ + page = """ # Histogram - Simple <|{data}|chart|type=histogram|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/histogram-stacked.py b/doc/gui/examples/charts/histogram-stacked.py index 893f8264cd..3ba9f75ec1 100644 --- a/doc/gui/examples/charts/histogram-stacked.py +++ b/doc/gui/examples/charts/histogram-stacked.py @@ -17,21 +17,22 @@ from taipy.gui import Gui -# Data set made of two series of random numbers -data = {"A": [random.random() for _ in range(200)], "B": [random.random() for _ in range(200)]} +if __name__ == "__main__": + # Data set made of two series of random numbers + data = {"A": [random.random() for _ in range(200)], "B": [random.random() for _ in range(200)]} -# Names of the two traces -names = ["A samples", "B samples"] + # Names of the two traces + names = ["A samples", "B samples"] -layout = { - # Make the histogram stack the data sets - "barmode": "stack" -} + layout = { + # Make the histogram stack the data sets + "barmode": "stack" + } -page = """ + page = """ # Histogram - Stacked <|{data}|chart|type=histogram|x[1]=A|x[2]=B|name={names}|layout={layout}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/line-style.py b/doc/gui/examples/charts/line-style.py index 8c4bbf1fce..2063e5b523 100644 --- a/doc/gui/examples/charts/line-style.py +++ b/doc/gui/examples/charts/line-style.py @@ -17,1117 +17,1118 @@ from taipy.gui import Gui -dates = pandas.date_range("2023-01-01", periods=365, freq="D") -temp = [ - -11.33333333, - -6, - -0.111111111, - 1.444444444, - 2.388888889, - 4.555555556, - 4.333333333, - 0.666666667, - 9, - 9.611111111, - -0.555555556, - 1.833333333, - -0.444444444, - 2.166666667, - -4, - -12.05555556, - -2.722222222, - 5, - 9.888888889, - 6.611111111, - -2.833333333, - -3.277777778, - -1.611111111, - -1.388888889, - 5.777777778, - 2.166666667, - -1.055555556, - 1.777777778, - 1.5, - 8.444444444, - 6.222222222, - -2.5, - -0.388888889, - 6.111111111, - -1.5, - 2.666666667, - -2.5, - 0.611111111, - 8.222222222, - 2.333333333, - -9.333333333, - -7.666666667, - -6.277777778, - -0.611111111, - 7.722222222, - 6.111111111, - -4, - 3.388888889, - 9.333333333, - -6.333333333, - -15, - -12.94444444, - -8.722222222, - -6.222222222, - -2.833333333, - -2.5, - 1.5, - 3.444444444, - 2.666666667, - 0.888888889, - 7.555555556, - 12.66666667, - 12.83333333, - 1.777777778, - -0.111111111, - -1.055555556, - 4.611111111, - 11.16666667, - 8.5, - 0.5, - 2.111111111, - 4.722222222, - 8.277777778, - 10.66666667, - 5.833333333, - 5.555555556, - 6.944444444, - 1.722222222, - 2.444444444, - 6.111111111, - 12.11111111, - 15.55555556, - 9.944444444, - 10.27777778, - 5.888888889, - 1.388888889, - 3.555555556, - 1.222222222, - 4.055555556, - 7.833333333, - 0.666666667, - 10.05555556, - 6.444444444, - 4.555555556, - 11, - 3.555555556, - -0.555555556, - 11.83333333, - 7.222222222, - 10.16666667, - 17.5, - 14.55555556, - 6.777777778, - 3.611111111, - 5.888888889, - 10.05555556, - 16.61111111, - 5.5, - 7.055555556, - 10.5, - 1.555555556, - 6.166666667, - 11.05555556, - 5.111111111, - 6.055555556, - 11, - 11.05555556, - 14.72222222, - 19.16666667, - 16.5, - 12.61111111, - 8.277777778, - 6.611111111, - 10.38888889, - 15.38888889, - 17.22222222, - 18.27777778, - 18.72222222, - 17.05555556, - 19.72222222, - 16.83333333, - 12.66666667, - 11.66666667, - 12.88888889, - 14.77777778, - 18, - 19.44444444, - 16.5, - 9.722222222, - 7.888888889, - 13.72222222, - 17.55555556, - 18.27777778, - 20.11111111, - 21.66666667, - 23.38888889, - 23.5, - 16.94444444, - 16.27777778, - 18.61111111, - 20.83333333, - 24.61111111, - 18.27777778, - 17.88888889, - 22.27777778, - 25.94444444, - 25.27777778, - 24.72222222, - 25.61111111, - 23.94444444, - 26.33333333, - 22.05555556, - 20.83333333, - 24.5, - 27.83333333, - 25.61111111, - 23.11111111, - 19.27777778, - 16.44444444, - 19.44444444, - 17.22222222, - 19.44444444, - 22.16666667, - 21.77777778, - 17.38888889, - 17.22222222, - 23.88888889, - 28.44444444, - 29.44444444, - 29.61111111, - 21.05555556, - 18.55555556, - 25.27777778, - 26.55555556, - 24.55555556, - 23.38888889, - 22.55555556, - 27.05555556, - 27.66666667, - 26.66666667, - 27.61111111, - 26.66666667, - 24.77777778, - 23, - 26.5, - 23.11111111, - 19.83333333, - 22.27777778, - 24.61111111, - 27.05555556, - 27.05555556, - 27.94444444, - 27.33333333, - 22.05555556, - 21.5, - 22, - 19.72222222, - 20.27777778, - 17.88888889, - 18.55555556, - 18.94444444, - 20, - 22.05555556, - 23.22222222, - 24.38888889, - 24.5, - 24.5, - 21.22222222, - 20.83333333, - 20.61111111, - 22.05555556, - 23.77777778, - 24.16666667, - 24.22222222, - 21.83333333, - 21.33333333, - 21.88888889, - 22.44444444, - 23.11111111, - 20.44444444, - 16.88888889, - 15.77777778, - 17.44444444, - 17.72222222, - 23.11111111, - 24.55555556, - 24.88888889, - 25.11111111, - 25.27777778, - 19.5, - 19.55555556, - 24.05555556, - 24.27777778, - 21.05555556, - 19.88888889, - 20.66666667, - 20.27777778, - 17.66666667, - 16.44444444, - 15.88888889, - 18.44444444, - 22.44444444, - 23, - 24.72222222, - 24.16666667, - 25.94444444, - 24.44444444, - 23.33333333, - 25.22222222, - 25, - 23.88888889, - 23.72222222, - 18.94444444, - 16.22222222, - 19.5, - 21.22222222, - 19.72222222, - 13.22222222, - 11.88888889, - 16.55555556, - 10.05555556, - 12.16666667, - 11.5, - 10.22222222, - 17.27777778, - 21.72222222, - 13.83333333, - 13, - 6.944444444, - 6.388888889, - 4.222222222, - 2.5, - 1.111111111, - 3.055555556, - 6.388888889, - 10.44444444, - -2, - -2.222222222, - 4.388888889, - 8.333333333, - 11.11111111, - 12.66666667, - 10.88888889, - 12.83333333, - 14.16666667, - 12.55555556, - 12.05555556, - 11.22222222, - 12.44444444, - 14.38888889, - 12, - 15.83333333, - 6.722222222, - 2.5, - 4.833333333, - 7.5, - 8.888888889, - 4, - 7.388888889, - 3.888888889, - 1.611111111, - -0.333333333, - -2, - 4.833333333, - -1.055555556, - -5.611111111, - -2.388888889, - 5.722222222, - 8.444444444, - 5.277777778, - 0.5, - -2.5, - 1.111111111, - 2.111111111, - 5.777777778, - 7.555555556, - 7.555555556, - 4.111111111, - -0.388888889, - -1, - 4.944444444, - 9.444444444, - 4.722222222, - -0.166666667, - 0.5, - -2.444444444, - -2.722222222, - -2.888888889, - -1.111111111, - -4.944444444, - -3.111111111, - -1.444444444, - -0.833333333, - 2.333333333, - 6.833333333, - 4.722222222, - 0.888888889, - 0.666666667, - 4.611111111, - 4.666666667, - 4.444444444, - 6.777777778, - 5.833333333, - 0.5, - 4.888888889, - 1.444444444, - -2.111111111, - 2.444444444, - -0.111111111, - -2.555555556, - -4.611111111, - -8.666666667, - -8.055555556, - 1.555555556, - -4.777777778, -] -min = [ - -14.33333333, - -12.9, - -3.311111111, - -4.955555556, - -3.611111111, - 0.555555556, - 1.133333333, - -5.133333333, - 2.3, - 3.911111111, - -7.055555556, - -1.366666667, - -4.844444444, - -3.333333333, - -6.1, - -17.15555556, - -4.822222222, - 0.4, - 3.488888889, - 4.211111111, - -6.433333333, - -7.577777778, - -7.111111111, - -7.088888889, - 1.577777778, - -3.433333333, - -4.355555556, - -0.722222222, - -2.1, - 2.044444444, - 2.222222222, - -4.7, - -2.388888889, - 4.111111111, - -5, - -0.133333333, - -5.3, - -2.288888889, - 6.022222222, - -1.766666667, - -15.53333333, - -13.46666667, - -9.277777778, - -3.211111111, - 3.122222222, - 1.411111111, - -6.8, - 1.388888889, - 5.333333333, - -9.833333333, - -22, - -19.74444444, - -14.62222222, - -9.622222222, - -8.433333333, - -8.5, - -2.8, - 0.144444444, - -3.233333333, - -3.411111111, - 5.355555556, - 8.366666667, - 7.333333333, - -0.322222222, - -6.911111111, - -4.955555556, - -1.588888889, - 4.966666667, - 2.5, - -4.3, - -1.888888889, - -1.777777778, - 2.477777778, - 3.766666667, - 0.533333333, - 1.755555556, - 2.944444444, - -4.977777778, - -4.055555556, - 1.711111111, - 6.011111111, - 13.15555556, - 5.044444444, - 6.577777778, - 3.388888889, - -1.011111111, - -0.244444444, - -2.477777778, - -1.444444444, - 2.533333333, - -6.333333333, - 4.255555556, - 1.944444444, - 0.855555556, - 5.4, - -1.244444444, - -2.855555556, - 4.833333333, - 2.722222222, - 6.466666667, - 14.5, - 9.855555556, - 2.277777778, - -3.188888889, - 0.788888889, - 4.155555556, - 13.41111111, - 2.3, - 0.855555556, - 8.4, - -0.444444444, - 1.166666667, - 7.755555556, - -0.288888889, - -0.244444444, - 8.7, - 5.555555556, - 8.222222222, - 16.26666667, - 14.4, - 5.711111111, - 5.177777778, - 4.511111111, - 5.988888889, - 10.08888889, - 10.52222222, - 15.37777778, - 12.42222222, - 14.95555556, - 15.22222222, - 11.93333333, - 6.866666667, - 6.866666667, - 9.688888889, - 11.57777778, - 12, - 13.34444444, - 11.3, - 6.222222222, - 2.088888889, - 8.322222222, - 14.05555556, - 13.77777778, - 16.91111111, - 16.86666667, - 16.68888889, - 18.5, - 12.54444444, - 12.27777778, - 15.91111111, - 15.03333333, - 22.11111111, - 15.77777778, - 13.68888889, - 17.87777778, - 19.94444444, - 18.57777778, - 18.62222222, - 20.11111111, - 17.14444444, - 20.43333333, - 15.75555556, - 17.33333333, - 20, - 23.03333333, - 19.61111111, - 18.51111111, - 15.27777778, - 11.44444444, - 13.64444444, - 11.42222222, - 16.14444444, - 19.76666667, - 18.77777778, - 11.88888889, - 12.32222222, - 20.78888889, - 25.04444444, - 25.34444444, - 23.81111111, - 18.35555556, - 11.85555556, - 18.37777778, - 23.15555556, - 21.55555556, - 17.48888889, - 19.05555556, - 20.25555556, - 23.86666667, - 23.86666667, - 21.41111111, - 21.16666667, - 18.67777778, - 18.1, - 24.4, - 19.01111111, - 17.13333333, - 18.27777778, - 21.71111111, - 22.85555556, - 22.65555556, - 25.14444444, - 24.13333333, - 17.95555556, - 14.7, - 15.1, - 16.02222222, - 14.27777778, - 11.18888889, - 13.65555556, - 16.74444444, - 16.7, - 17.65555556, - 16.62222222, - 21.68888889, - 19.6, - 18.6, - 15.52222222, - 18.53333333, - 17.01111111, - 17.75555556, - 20.47777778, - 17.76666667, - 22.22222222, - 18.23333333, - 17.83333333, - 15.38888889, - 19.64444444, - 17.81111111, - 15.44444444, - 14.88888889, - 13.07777778, - 15.24444444, - 11.82222222, - 20.81111111, - 21.45555556, - 18.98888889, - 19.71111111, - 19.27777778, - 12.7, - 15.05555556, - 19.15555556, - 20.77777778, - 15.35555556, - 17.68888889, - 18.26666667, - 15.47777778, - 12.76666667, - 10.54444444, - 13.38888889, - 12.54444444, - 19.84444444, - 19.5, - 21.92222222, - 17.86666667, - 22.44444444, - 19.64444444, - 20.73333333, - 22.02222222, - 19, - 20.48888889, - 19.02222222, - 16.44444444, - 14.22222222, - 16.3, - 16.42222222, - 17.22222222, - 8.322222222, - 8.288888889, - 13.95555556, - 5.555555556, - 5.666666667, - 7.7, - 4.022222222, - 11.77777778, - 16.42222222, - 11.83333333, - 9.7, - 0.044444444, - 3.688888889, - -2.077777778, - 0.1, - -5.388888889, - -3.244444444, - 0.688888889, - 5.744444444, - -7.7, - -7.022222222, - -0.211111111, - 4.833333333, - 8.111111111, - 5.766666667, - 7.888888889, - 10.43333333, - 11.56666667, - 10.15555556, - 7.155555556, - 4.522222222, - 7.144444444, - 10.88888889, - 9.5, - 12.13333333, - 4.022222222, - -3.9, - 1.433333333, - 0.7, - 3.188888889, - -1.7, - 3.588888889, - -0.111111111, - -2.788888889, - -7.133333333, - -5, - 0.733333333, - -7.555555556, - -12.51111111, - -8.188888889, - 3.122222222, - 2.944444444, - 0.477777778, - -3.2, - -9.2, - -4.788888889, - -0.288888889, - 1.077777778, - 4.755555556, - 5.455555556, - 0.511111111, - -3.888888889, - -7.4, - -1.355555556, - 5.144444444, - 0.122222222, - -5.166666667, - -5, - -5.144444444, - -8.822222222, - -6.388888889, - -6.811111111, - -8.944444444, - -10.11111111, - -7.144444444, - -5.133333333, - -1.166666667, - 1.833333333, - -1.477777778, - -1.811111111, - -2.433333333, - -1.188888889, - -2.333333333, - 0.744444444, - 1.877777778, - 1.333333333, - -1.7, - 0.888888889, - -3.855555556, - -8.211111111, - -1.055555556, - -4.211111111, - -7.355555556, - -8.111111111, - -10.96666667, - -13.05555556, - -4.644444444, - -7.577777778, -] -max = [ - -7.233333333, - -1.6, - 5.488888889, - 7.744444444, - 6.188888889, - 6.555555556, - 10.53333333, - 6.766666667, - 14.1, - 14.11111111, - 2.044444444, - 4.633333333, - 2.055555556, - 8.666666667, - -1.4, - -5.555555556, - 4.177777778, - 11.8, - 15.58888889, - 12.31111111, - 3.666666667, - -0.977777778, - 1.288888889, - 4.211111111, - 9.377777778, - 5.266666667, - 2.144444444, - 3.977777778, - 7.2, - 11.94444444, - 11.32222222, - 4, - 6.611111111, - 8.211111111, - 3.5, - 8.866666667, - 3.6, - 3.711111111, - 13.12222222, - 7.833333333, - -3.333333333, - -2.166666667, - -2.877777778, - 5.188888889, - 13.12222222, - 12.11111111, - -0.7, - 6.688888889, - 14.03333333, - -2.433333333, - -8.6, - -8.244444444, - -2.122222222, - -2.722222222, - 1.266666667, - 2.8, - 5.7, - 6.944444444, - 5.066666667, - 5.688888889, - 13.35555556, - 16.66666667, - 17.33333333, - 7.277777778, - 6.388888889, - 1.344444444, - 9.111111111, - 17.96666667, - 12.8, - 5.8, - 6.911111111, - 6.822222222, - 11.87777778, - 13.16666667, - 9.233333333, - 8.655555556, - 10.04444444, - 7.022222222, - 7.644444444, - 8.311111111, - 16.71111111, - 18.85555556, - 12.14444444, - 13.27777778, - 11.18888889, - 7.088888889, - 8.255555556, - 7.522222222, - 9.955555556, - 9.933333333, - 4.866666667, - 15.25555556, - 9.244444444, - 9.755555556, - 14, - 8.955555556, - 2.344444444, - 17.43333333, - 12.12222222, - 13.46666667, - 23, - 18.45555556, - 12.77777778, - 7.211111111, - 8.588888889, - 14.35555556, - 19.01111111, - 12.4, - 9.155555556, - 15.6, - 4.955555556, - 8.966666667, - 16.95555556, - 9.511111111, - 10.15555556, - 16, - 14.45555556, - 21.02222222, - 25.76666667, - 20.5, - 15.71111111, - 11.67777778, - 12.81111111, - 12.88888889, - 17.58888889, - 23.12222222, - 21.77777778, - 24.42222222, - 20.05555556, - 24.32222222, - 18.83333333, - 19.56666667, - 14.96666667, - 19.68888889, - 18.57777778, - 23, - 23.34444444, - 20.7, - 11.82222222, - 11.48888889, - 17.52222222, - 22.55555556, - 20.47777778, - 23.01111111, - 27.86666667, - 30.28888889, - 30.3, - 22.94444444, - 18.57777778, - 25.51111111, - 24.13333333, - 30.01111111, - 24.77777778, - 20.28888889, - 28.67777778, - 32.74444444, - 31.37777778, - 28.52222222, - 31.81111111, - 27.24444444, - 32.53333333, - 26.15555556, - 24.63333333, - 28.3, - 31.23333333, - 32.21111111, - 28.21111111, - 23.07777778, - 21.64444444, - 24.34444444, - 19.62222222, - 25.14444444, - 24.46666667, - 23.87777778, - 21.28888889, - 20.22222222, - 29.98888889, - 32.04444444, - 36.44444444, - 36.01111111, - 24.85555556, - 23.45555556, - 29.17777778, - 32.25555556, - 28.75555556, - 30.28888889, - 28.85555556, - 30.45555556, - 31.26666667, - 28.86666667, - 33.31111111, - 30.66666667, - 28.67777778, - 27.4, - 32.2, - 25.41111111, - 22.23333333, - 26.67777778, - 30.21111111, - 29.15555556, - 29.65555556, - 31.94444444, - 31.43333333, - 28.35555556, - 24.8, - 25.5, - 25.42222222, - 24.17777778, - 20.88888889, - 24.35555556, - 25.54444444, - 22, - 27.95555556, - 29.42222222, - 28.88888889, - 26.8, - 28.2, - 26.92222222, - 24.13333333, - 22.61111111, - 26.15555556, - 30.57777778, - 30.86666667, - 29.92222222, - 27.33333333, - 23.43333333, - 24.68888889, - 26.94444444, - 28.81111111, - 25.54444444, - 22.48888889, - 21.67777778, - 19.74444444, - 23.82222222, - 25.91111111, - 30.85555556, - 28.48888889, - 29.21111111, - 28.37777778, - 22.4, - 25.55555556, - 27.35555556, - 30.67777778, - 27.95555556, - 25.98888889, - 23.46666667, - 25.37777778, - 20.46666667, - 22.54444444, - 20.18888889, - 22.24444444, - 26.84444444, - 25.8, - 29.62222222, - 26.36666667, - 32.24444444, - 29.84444444, - 28.33333333, - 31.22222222, - 29.9, - 29.98888889, - 27.42222222, - 25.54444444, - 20.22222222, - 24, - 24.52222222, - 25.02222222, - 16.12222222, - 17.58888889, - 23.25555556, - 15.75555556, - 18.66666667, - 18.4, - 12.52222222, - 20.07777778, - 28.62222222, - 17.23333333, - 16.6, - 13.34444444, - 10.98888889, - 9.522222222, - 5.8, - 6.811111111, - 6.555555556, - 12.18888889, - 12.64444444, - 4.2, - 3.577777778, - 8.888888889, - 15.23333333, - 16.11111111, - 18.36666667, - 16.98888889, - 15.63333333, - 16.46666667, - 15.55555556, - 15.65555556, - 17.42222222, - 18.74444444, - 19.48888889, - 15.9, - 19.73333333, - 13.02222222, - 8.1, - 8.933333333, - 11.3, - 12.38888889, - 8.3, - 12.38888889, - 6.388888889, - 4.211111111, - 4.666666667, - 0.7, - 7.133333333, - 2.344444444, - 1.088888889, - 0.111111111, - 11.62222222, - 10.84444444, - 8.777777778, - 3.5, - 3.4, - 7.211111111, - 5.711111111, - 9.677777778, - 12.25555556, - 10.15555556, - 6.511111111, - 4.911111111, - 1.5, - 11.44444444, - 15.54444444, - 8.122222222, - 6.233333333, - 7, - 4.355555556, - 0.277777778, - 3.711111111, - 2.888888889, - 1.555555556, - 3.888888889, - 4.555555556, - 5.666666667, - 7.833333333, - 9.833333333, - 10.02222222, - 6.288888889, - 5.366666667, - 11.41111111, - 9.566666667, - 9.744444444, - 13.57777778, - 9.433333333, - 3.1, - 11.08888889, - 3.844444444, - 2.488888889, - 7.544444444, - 4.488888889, - -0.455555556, - -2.111111111, - -3.566666667, - -1.955555556, - 3.955555556, - 1.222222222, -] +if __name__ == "__main__": + dates = pandas.date_range("2023-01-01", periods=365, freq="D") + temp = [ + -11.33333333, + -6, + -0.111111111, + 1.444444444, + 2.388888889, + 4.555555556, + 4.333333333, + 0.666666667, + 9, + 9.611111111, + -0.555555556, + 1.833333333, + -0.444444444, + 2.166666667, + -4, + -12.05555556, + -2.722222222, + 5, + 9.888888889, + 6.611111111, + -2.833333333, + -3.277777778, + -1.611111111, + -1.388888889, + 5.777777778, + 2.166666667, + -1.055555556, + 1.777777778, + 1.5, + 8.444444444, + 6.222222222, + -2.5, + -0.388888889, + 6.111111111, + -1.5, + 2.666666667, + -2.5, + 0.611111111, + 8.222222222, + 2.333333333, + -9.333333333, + -7.666666667, + -6.277777778, + -0.611111111, + 7.722222222, + 6.111111111, + -4, + 3.388888889, + 9.333333333, + -6.333333333, + -15, + -12.94444444, + -8.722222222, + -6.222222222, + -2.833333333, + -2.5, + 1.5, + 3.444444444, + 2.666666667, + 0.888888889, + 7.555555556, + 12.66666667, + 12.83333333, + 1.777777778, + -0.111111111, + -1.055555556, + 4.611111111, + 11.16666667, + 8.5, + 0.5, + 2.111111111, + 4.722222222, + 8.277777778, + 10.66666667, + 5.833333333, + 5.555555556, + 6.944444444, + 1.722222222, + 2.444444444, + 6.111111111, + 12.11111111, + 15.55555556, + 9.944444444, + 10.27777778, + 5.888888889, + 1.388888889, + 3.555555556, + 1.222222222, + 4.055555556, + 7.833333333, + 0.666666667, + 10.05555556, + 6.444444444, + 4.555555556, + 11, + 3.555555556, + -0.555555556, + 11.83333333, + 7.222222222, + 10.16666667, + 17.5, + 14.55555556, + 6.777777778, + 3.611111111, + 5.888888889, + 10.05555556, + 16.61111111, + 5.5, + 7.055555556, + 10.5, + 1.555555556, + 6.166666667, + 11.05555556, + 5.111111111, + 6.055555556, + 11, + 11.05555556, + 14.72222222, + 19.16666667, + 16.5, + 12.61111111, + 8.277777778, + 6.611111111, + 10.38888889, + 15.38888889, + 17.22222222, + 18.27777778, + 18.72222222, + 17.05555556, + 19.72222222, + 16.83333333, + 12.66666667, + 11.66666667, + 12.88888889, + 14.77777778, + 18, + 19.44444444, + 16.5, + 9.722222222, + 7.888888889, + 13.72222222, + 17.55555556, + 18.27777778, + 20.11111111, + 21.66666667, + 23.38888889, + 23.5, + 16.94444444, + 16.27777778, + 18.61111111, + 20.83333333, + 24.61111111, + 18.27777778, + 17.88888889, + 22.27777778, + 25.94444444, + 25.27777778, + 24.72222222, + 25.61111111, + 23.94444444, + 26.33333333, + 22.05555556, + 20.83333333, + 24.5, + 27.83333333, + 25.61111111, + 23.11111111, + 19.27777778, + 16.44444444, + 19.44444444, + 17.22222222, + 19.44444444, + 22.16666667, + 21.77777778, + 17.38888889, + 17.22222222, + 23.88888889, + 28.44444444, + 29.44444444, + 29.61111111, + 21.05555556, + 18.55555556, + 25.27777778, + 26.55555556, + 24.55555556, + 23.38888889, + 22.55555556, + 27.05555556, + 27.66666667, + 26.66666667, + 27.61111111, + 26.66666667, + 24.77777778, + 23, + 26.5, + 23.11111111, + 19.83333333, + 22.27777778, + 24.61111111, + 27.05555556, + 27.05555556, + 27.94444444, + 27.33333333, + 22.05555556, + 21.5, + 22, + 19.72222222, + 20.27777778, + 17.88888889, + 18.55555556, + 18.94444444, + 20, + 22.05555556, + 23.22222222, + 24.38888889, + 24.5, + 24.5, + 21.22222222, + 20.83333333, + 20.61111111, + 22.05555556, + 23.77777778, + 24.16666667, + 24.22222222, + 21.83333333, + 21.33333333, + 21.88888889, + 22.44444444, + 23.11111111, + 20.44444444, + 16.88888889, + 15.77777778, + 17.44444444, + 17.72222222, + 23.11111111, + 24.55555556, + 24.88888889, + 25.11111111, + 25.27777778, + 19.5, + 19.55555556, + 24.05555556, + 24.27777778, + 21.05555556, + 19.88888889, + 20.66666667, + 20.27777778, + 17.66666667, + 16.44444444, + 15.88888889, + 18.44444444, + 22.44444444, + 23, + 24.72222222, + 24.16666667, + 25.94444444, + 24.44444444, + 23.33333333, + 25.22222222, + 25, + 23.88888889, + 23.72222222, + 18.94444444, + 16.22222222, + 19.5, + 21.22222222, + 19.72222222, + 13.22222222, + 11.88888889, + 16.55555556, + 10.05555556, + 12.16666667, + 11.5, + 10.22222222, + 17.27777778, + 21.72222222, + 13.83333333, + 13, + 6.944444444, + 6.388888889, + 4.222222222, + 2.5, + 1.111111111, + 3.055555556, + 6.388888889, + 10.44444444, + -2, + -2.222222222, + 4.388888889, + 8.333333333, + 11.11111111, + 12.66666667, + 10.88888889, + 12.83333333, + 14.16666667, + 12.55555556, + 12.05555556, + 11.22222222, + 12.44444444, + 14.38888889, + 12, + 15.83333333, + 6.722222222, + 2.5, + 4.833333333, + 7.5, + 8.888888889, + 4, + 7.388888889, + 3.888888889, + 1.611111111, + -0.333333333, + -2, + 4.833333333, + -1.055555556, + -5.611111111, + -2.388888889, + 5.722222222, + 8.444444444, + 5.277777778, + 0.5, + -2.5, + 1.111111111, + 2.111111111, + 5.777777778, + 7.555555556, + 7.555555556, + 4.111111111, + -0.388888889, + -1, + 4.944444444, + 9.444444444, + 4.722222222, + -0.166666667, + 0.5, + -2.444444444, + -2.722222222, + -2.888888889, + -1.111111111, + -4.944444444, + -3.111111111, + -1.444444444, + -0.833333333, + 2.333333333, + 6.833333333, + 4.722222222, + 0.888888889, + 0.666666667, + 4.611111111, + 4.666666667, + 4.444444444, + 6.777777778, + 5.833333333, + 0.5, + 4.888888889, + 1.444444444, + -2.111111111, + 2.444444444, + -0.111111111, + -2.555555556, + -4.611111111, + -8.666666667, + -8.055555556, + 1.555555556, + -4.777777778, + ] + min = [ + -14.33333333, + -12.9, + -3.311111111, + -4.955555556, + -3.611111111, + 0.555555556, + 1.133333333, + -5.133333333, + 2.3, + 3.911111111, + -7.055555556, + -1.366666667, + -4.844444444, + -3.333333333, + -6.1, + -17.15555556, + -4.822222222, + 0.4, + 3.488888889, + 4.211111111, + -6.433333333, + -7.577777778, + -7.111111111, + -7.088888889, + 1.577777778, + -3.433333333, + -4.355555556, + -0.722222222, + -2.1, + 2.044444444, + 2.222222222, + -4.7, + -2.388888889, + 4.111111111, + -5, + -0.133333333, + -5.3, + -2.288888889, + 6.022222222, + -1.766666667, + -15.53333333, + -13.46666667, + -9.277777778, + -3.211111111, + 3.122222222, + 1.411111111, + -6.8, + 1.388888889, + 5.333333333, + -9.833333333, + -22, + -19.74444444, + -14.62222222, + -9.622222222, + -8.433333333, + -8.5, + -2.8, + 0.144444444, + -3.233333333, + -3.411111111, + 5.355555556, + 8.366666667, + 7.333333333, + -0.322222222, + -6.911111111, + -4.955555556, + -1.588888889, + 4.966666667, + 2.5, + -4.3, + -1.888888889, + -1.777777778, + 2.477777778, + 3.766666667, + 0.533333333, + 1.755555556, + 2.944444444, + -4.977777778, + -4.055555556, + 1.711111111, + 6.011111111, + 13.15555556, + 5.044444444, + 6.577777778, + 3.388888889, + -1.011111111, + -0.244444444, + -2.477777778, + -1.444444444, + 2.533333333, + -6.333333333, + 4.255555556, + 1.944444444, + 0.855555556, + 5.4, + -1.244444444, + -2.855555556, + 4.833333333, + 2.722222222, + 6.466666667, + 14.5, + 9.855555556, + 2.277777778, + -3.188888889, + 0.788888889, + 4.155555556, + 13.41111111, + 2.3, + 0.855555556, + 8.4, + -0.444444444, + 1.166666667, + 7.755555556, + -0.288888889, + -0.244444444, + 8.7, + 5.555555556, + 8.222222222, + 16.26666667, + 14.4, + 5.711111111, + 5.177777778, + 4.511111111, + 5.988888889, + 10.08888889, + 10.52222222, + 15.37777778, + 12.42222222, + 14.95555556, + 15.22222222, + 11.93333333, + 6.866666667, + 6.866666667, + 9.688888889, + 11.57777778, + 12, + 13.34444444, + 11.3, + 6.222222222, + 2.088888889, + 8.322222222, + 14.05555556, + 13.77777778, + 16.91111111, + 16.86666667, + 16.68888889, + 18.5, + 12.54444444, + 12.27777778, + 15.91111111, + 15.03333333, + 22.11111111, + 15.77777778, + 13.68888889, + 17.87777778, + 19.94444444, + 18.57777778, + 18.62222222, + 20.11111111, + 17.14444444, + 20.43333333, + 15.75555556, + 17.33333333, + 20, + 23.03333333, + 19.61111111, + 18.51111111, + 15.27777778, + 11.44444444, + 13.64444444, + 11.42222222, + 16.14444444, + 19.76666667, + 18.77777778, + 11.88888889, + 12.32222222, + 20.78888889, + 25.04444444, + 25.34444444, + 23.81111111, + 18.35555556, + 11.85555556, + 18.37777778, + 23.15555556, + 21.55555556, + 17.48888889, + 19.05555556, + 20.25555556, + 23.86666667, + 23.86666667, + 21.41111111, + 21.16666667, + 18.67777778, + 18.1, + 24.4, + 19.01111111, + 17.13333333, + 18.27777778, + 21.71111111, + 22.85555556, + 22.65555556, + 25.14444444, + 24.13333333, + 17.95555556, + 14.7, + 15.1, + 16.02222222, + 14.27777778, + 11.18888889, + 13.65555556, + 16.74444444, + 16.7, + 17.65555556, + 16.62222222, + 21.68888889, + 19.6, + 18.6, + 15.52222222, + 18.53333333, + 17.01111111, + 17.75555556, + 20.47777778, + 17.76666667, + 22.22222222, + 18.23333333, + 17.83333333, + 15.38888889, + 19.64444444, + 17.81111111, + 15.44444444, + 14.88888889, + 13.07777778, + 15.24444444, + 11.82222222, + 20.81111111, + 21.45555556, + 18.98888889, + 19.71111111, + 19.27777778, + 12.7, + 15.05555556, + 19.15555556, + 20.77777778, + 15.35555556, + 17.68888889, + 18.26666667, + 15.47777778, + 12.76666667, + 10.54444444, + 13.38888889, + 12.54444444, + 19.84444444, + 19.5, + 21.92222222, + 17.86666667, + 22.44444444, + 19.64444444, + 20.73333333, + 22.02222222, + 19, + 20.48888889, + 19.02222222, + 16.44444444, + 14.22222222, + 16.3, + 16.42222222, + 17.22222222, + 8.322222222, + 8.288888889, + 13.95555556, + 5.555555556, + 5.666666667, + 7.7, + 4.022222222, + 11.77777778, + 16.42222222, + 11.83333333, + 9.7, + 0.044444444, + 3.688888889, + -2.077777778, + 0.1, + -5.388888889, + -3.244444444, + 0.688888889, + 5.744444444, + -7.7, + -7.022222222, + -0.211111111, + 4.833333333, + 8.111111111, + 5.766666667, + 7.888888889, + 10.43333333, + 11.56666667, + 10.15555556, + 7.155555556, + 4.522222222, + 7.144444444, + 10.88888889, + 9.5, + 12.13333333, + 4.022222222, + -3.9, + 1.433333333, + 0.7, + 3.188888889, + -1.7, + 3.588888889, + -0.111111111, + -2.788888889, + -7.133333333, + -5, + 0.733333333, + -7.555555556, + -12.51111111, + -8.188888889, + 3.122222222, + 2.944444444, + 0.477777778, + -3.2, + -9.2, + -4.788888889, + -0.288888889, + 1.077777778, + 4.755555556, + 5.455555556, + 0.511111111, + -3.888888889, + -7.4, + -1.355555556, + 5.144444444, + 0.122222222, + -5.166666667, + -5, + -5.144444444, + -8.822222222, + -6.388888889, + -6.811111111, + -8.944444444, + -10.11111111, + -7.144444444, + -5.133333333, + -1.166666667, + 1.833333333, + -1.477777778, + -1.811111111, + -2.433333333, + -1.188888889, + -2.333333333, + 0.744444444, + 1.877777778, + 1.333333333, + -1.7, + 0.888888889, + -3.855555556, + -8.211111111, + -1.055555556, + -4.211111111, + -7.355555556, + -8.111111111, + -10.96666667, + -13.05555556, + -4.644444444, + -7.577777778, + ] + max = [ + -7.233333333, + -1.6, + 5.488888889, + 7.744444444, + 6.188888889, + 6.555555556, + 10.53333333, + 6.766666667, + 14.1, + 14.11111111, + 2.044444444, + 4.633333333, + 2.055555556, + 8.666666667, + -1.4, + -5.555555556, + 4.177777778, + 11.8, + 15.58888889, + 12.31111111, + 3.666666667, + -0.977777778, + 1.288888889, + 4.211111111, + 9.377777778, + 5.266666667, + 2.144444444, + 3.977777778, + 7.2, + 11.94444444, + 11.32222222, + 4, + 6.611111111, + 8.211111111, + 3.5, + 8.866666667, + 3.6, + 3.711111111, + 13.12222222, + 7.833333333, + -3.333333333, + -2.166666667, + -2.877777778, + 5.188888889, + 13.12222222, + 12.11111111, + -0.7, + 6.688888889, + 14.03333333, + -2.433333333, + -8.6, + -8.244444444, + -2.122222222, + -2.722222222, + 1.266666667, + 2.8, + 5.7, + 6.944444444, + 5.066666667, + 5.688888889, + 13.35555556, + 16.66666667, + 17.33333333, + 7.277777778, + 6.388888889, + 1.344444444, + 9.111111111, + 17.96666667, + 12.8, + 5.8, + 6.911111111, + 6.822222222, + 11.87777778, + 13.16666667, + 9.233333333, + 8.655555556, + 10.04444444, + 7.022222222, + 7.644444444, + 8.311111111, + 16.71111111, + 18.85555556, + 12.14444444, + 13.27777778, + 11.18888889, + 7.088888889, + 8.255555556, + 7.522222222, + 9.955555556, + 9.933333333, + 4.866666667, + 15.25555556, + 9.244444444, + 9.755555556, + 14, + 8.955555556, + 2.344444444, + 17.43333333, + 12.12222222, + 13.46666667, + 23, + 18.45555556, + 12.77777778, + 7.211111111, + 8.588888889, + 14.35555556, + 19.01111111, + 12.4, + 9.155555556, + 15.6, + 4.955555556, + 8.966666667, + 16.95555556, + 9.511111111, + 10.15555556, + 16, + 14.45555556, + 21.02222222, + 25.76666667, + 20.5, + 15.71111111, + 11.67777778, + 12.81111111, + 12.88888889, + 17.58888889, + 23.12222222, + 21.77777778, + 24.42222222, + 20.05555556, + 24.32222222, + 18.83333333, + 19.56666667, + 14.96666667, + 19.68888889, + 18.57777778, + 23, + 23.34444444, + 20.7, + 11.82222222, + 11.48888889, + 17.52222222, + 22.55555556, + 20.47777778, + 23.01111111, + 27.86666667, + 30.28888889, + 30.3, + 22.94444444, + 18.57777778, + 25.51111111, + 24.13333333, + 30.01111111, + 24.77777778, + 20.28888889, + 28.67777778, + 32.74444444, + 31.37777778, + 28.52222222, + 31.81111111, + 27.24444444, + 32.53333333, + 26.15555556, + 24.63333333, + 28.3, + 31.23333333, + 32.21111111, + 28.21111111, + 23.07777778, + 21.64444444, + 24.34444444, + 19.62222222, + 25.14444444, + 24.46666667, + 23.87777778, + 21.28888889, + 20.22222222, + 29.98888889, + 32.04444444, + 36.44444444, + 36.01111111, + 24.85555556, + 23.45555556, + 29.17777778, + 32.25555556, + 28.75555556, + 30.28888889, + 28.85555556, + 30.45555556, + 31.26666667, + 28.86666667, + 33.31111111, + 30.66666667, + 28.67777778, + 27.4, + 32.2, + 25.41111111, + 22.23333333, + 26.67777778, + 30.21111111, + 29.15555556, + 29.65555556, + 31.94444444, + 31.43333333, + 28.35555556, + 24.8, + 25.5, + 25.42222222, + 24.17777778, + 20.88888889, + 24.35555556, + 25.54444444, + 22, + 27.95555556, + 29.42222222, + 28.88888889, + 26.8, + 28.2, + 26.92222222, + 24.13333333, + 22.61111111, + 26.15555556, + 30.57777778, + 30.86666667, + 29.92222222, + 27.33333333, + 23.43333333, + 24.68888889, + 26.94444444, + 28.81111111, + 25.54444444, + 22.48888889, + 21.67777778, + 19.74444444, + 23.82222222, + 25.91111111, + 30.85555556, + 28.48888889, + 29.21111111, + 28.37777778, + 22.4, + 25.55555556, + 27.35555556, + 30.67777778, + 27.95555556, + 25.98888889, + 23.46666667, + 25.37777778, + 20.46666667, + 22.54444444, + 20.18888889, + 22.24444444, + 26.84444444, + 25.8, + 29.62222222, + 26.36666667, + 32.24444444, + 29.84444444, + 28.33333333, + 31.22222222, + 29.9, + 29.98888889, + 27.42222222, + 25.54444444, + 20.22222222, + 24, + 24.52222222, + 25.02222222, + 16.12222222, + 17.58888889, + 23.25555556, + 15.75555556, + 18.66666667, + 18.4, + 12.52222222, + 20.07777778, + 28.62222222, + 17.23333333, + 16.6, + 13.34444444, + 10.98888889, + 9.522222222, + 5.8, + 6.811111111, + 6.555555556, + 12.18888889, + 12.64444444, + 4.2, + 3.577777778, + 8.888888889, + 15.23333333, + 16.11111111, + 18.36666667, + 16.98888889, + 15.63333333, + 16.46666667, + 15.55555556, + 15.65555556, + 17.42222222, + 18.74444444, + 19.48888889, + 15.9, + 19.73333333, + 13.02222222, + 8.1, + 8.933333333, + 11.3, + 12.38888889, + 8.3, + 12.38888889, + 6.388888889, + 4.211111111, + 4.666666667, + 0.7, + 7.133333333, + 2.344444444, + 1.088888889, + 0.111111111, + 11.62222222, + 10.84444444, + 8.777777778, + 3.5, + 3.4, + 7.211111111, + 5.711111111, + 9.677777778, + 12.25555556, + 10.15555556, + 6.511111111, + 4.911111111, + 1.5, + 11.44444444, + 15.54444444, + 8.122222222, + 6.233333333, + 7, + 4.355555556, + 0.277777778, + 3.711111111, + 2.888888889, + 1.555555556, + 3.888888889, + 4.555555556, + 5.666666667, + 7.833333333, + 9.833333333, + 10.02222222, + 6.288888889, + 5.366666667, + 11.41111111, + 9.566666667, + 9.744444444, + 13.57777778, + 9.433333333, + 3.1, + 11.08888889, + 3.844444444, + 2.488888889, + 7.544444444, + 4.488888889, + -0.455555556, + -2.111111111, + -3.566666667, + -1.955555556, + 3.955555556, + 1.222222222, + ] -start = 50 -size = 100 -data = {"Date": dates[start:size], "Temp°C": temp[start:size], "Min": min[start:size], "Max": max[start:size]} + start = 50 + size = 100 + data = {"Date": dates[start:size], "Temp°C": temp[start:size], "Min": min[start:size], "Max": max[start:size]} -page = """ + page = """ # Line - Style <|{data}|chart|mode=lines|x=Date|y[1]=Temp°C|y[2]=Min|y[3]=Max|line[1]=dash|color[2]=blue|color[3]=red|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/line-texts.py b/doc/gui/examples/charts/line-texts.py index b9dd36753b..a9329862ea 100644 --- a/doc/gui/examples/charts/line-texts.py +++ b/doc/gui/examples/charts/line-texts.py @@ -18,1123 +18,1124 @@ from taipy.gui import Gui -dates = pandas.date_range("2023-01-01", periods=365, freq="D") -temp = [ - -11.33333333, - -6, - -0.111111111, - 1.444444444, - 2.388888889, - 4.555555556, - 4.333333333, - 0.666666667, - 9, - 9.611111111, - -0.555555556, - 1.833333333, - -0.444444444, - 2.166666667, - -4, - -12.05555556, - -2.722222222, - 5, - 9.888888889, - 6.611111111, - -2.833333333, - -3.277777778, - -1.611111111, - -1.388888889, - 5.777777778, - 2.166666667, - -1.055555556, - 1.777777778, - 1.5, - 8.444444444, - 6.222222222, - -2.5, - -0.388888889, - 6.111111111, - -1.5, - 2.666666667, - -2.5, - 0.611111111, - 8.222222222, - 2.333333333, - -9.333333333, - -7.666666667, - -6.277777778, - -0.611111111, - 7.722222222, - 6.111111111, - -4, - 3.388888889, - 9.333333333, - -6.333333333, - -15, - -12.94444444, - -8.722222222, - -6.222222222, - -2.833333333, - -2.5, - 1.5, - 3.444444444, - 2.666666667, - 0.888888889, - 7.555555556, - 12.66666667, - 12.83333333, - 1.777777778, - -0.111111111, - -1.055555556, - 4.611111111, - 11.16666667, - 8.5, - 0.5, - 2.111111111, - 4.722222222, - 8.277777778, - 10.66666667, - 5.833333333, - 5.555555556, - 6.944444444, - 1.722222222, - 2.444444444, - 6.111111111, - 12.11111111, - 15.55555556, - 9.944444444, - 10.27777778, - 5.888888889, - 1.388888889, - 3.555555556, - 1.222222222, - 4.055555556, - 7.833333333, - 0.666666667, - 10.05555556, - 6.444444444, - 4.555555556, - 11, - 3.555555556, - -0.555555556, - 11.83333333, - 7.222222222, - 10.16666667, - 17.5, - 14.55555556, - 6.777777778, - 3.611111111, - 5.888888889, - 10.05555556, - 16.61111111, - 5.5, - 7.055555556, - 10.5, - 1.555555556, - 6.166666667, - 11.05555556, - 5.111111111, - 6.055555556, - 11, - 11.05555556, - 14.72222222, - 19.16666667, - 16.5, - 12.61111111, - 8.277777778, - 6.611111111, - 10.38888889, - 15.38888889, - 17.22222222, - 18.27777778, - 18.72222222, - 17.05555556, - 19.72222222, - 16.83333333, - 12.66666667, - 11.66666667, - 12.88888889, - 14.77777778, - 18, - 19.44444444, - 16.5, - 9.722222222, - 7.888888889, - 13.72222222, - 17.55555556, - 18.27777778, - 20.11111111, - 21.66666667, - 23.38888889, - 23.5, - 16.94444444, - 16.27777778, - 18.61111111, - 20.83333333, - 24.61111111, - 18.27777778, - 17.88888889, - 22.27777778, - 25.94444444, - 25.27777778, - 24.72222222, - 25.61111111, - 23.94444444, - 26.33333333, - 22.05555556, - 20.83333333, - 24.5, - 27.83333333, - 25.61111111, - 23.11111111, - 19.27777778, - 16.44444444, - 19.44444444, - 17.22222222, - 19.44444444, - 22.16666667, - 21.77777778, - 17.38888889, - 17.22222222, - 23.88888889, - 28.44444444, - 29.44444444, - 29.61111111, - 21.05555556, - 18.55555556, - 25.27777778, - 26.55555556, - 24.55555556, - 23.38888889, - 22.55555556, - 27.05555556, - 27.66666667, - 26.66666667, - 27.61111111, - 26.66666667, - 24.77777778, - 23, - 26.5, - 23.11111111, - 19.83333333, - 22.27777778, - 24.61111111, - 27.05555556, - 27.05555556, - 27.94444444, - 27.33333333, - 22.05555556, - 21.5, - 22, - 19.72222222, - 20.27777778, - 17.88888889, - 18.55555556, - 18.94444444, - 20, - 22.05555556, - 23.22222222, - 24.38888889, - 24.5, - 24.5, - 21.22222222, - 20.83333333, - 20.61111111, - 22.05555556, - 23.77777778, - 24.16666667, - 24.22222222, - 21.83333333, - 21.33333333, - 21.88888889, - 22.44444444, - 23.11111111, - 20.44444444, - 16.88888889, - 15.77777778, - 17.44444444, - 17.72222222, - 23.11111111, - 24.55555556, - 24.88888889, - 25.11111111, - 25.27777778, - 19.5, - 19.55555556, - 24.05555556, - 24.27777778, - 21.05555556, - 19.88888889, - 20.66666667, - 20.27777778, - 17.66666667, - 16.44444444, - 15.88888889, - 18.44444444, - 22.44444444, - 23, - 24.72222222, - 24.16666667, - 25.94444444, - 24.44444444, - 23.33333333, - 25.22222222, - 25, - 23.88888889, - 23.72222222, - 18.94444444, - 16.22222222, - 19.5, - 21.22222222, - 19.72222222, - 13.22222222, - 11.88888889, - 16.55555556, - 10.05555556, - 12.16666667, - 11.5, - 10.22222222, - 17.27777778, - 21.72222222, - 13.83333333, - 13, - 6.944444444, - 6.388888889, - 4.222222222, - 2.5, - 1.111111111, - 3.055555556, - 6.388888889, - 10.44444444, - -2, - -2.222222222, - 4.388888889, - 8.333333333, - 11.11111111, - 12.66666667, - 10.88888889, - 12.83333333, - 14.16666667, - 12.55555556, - 12.05555556, - 11.22222222, - 12.44444444, - 14.38888889, - 12, - 15.83333333, - 6.722222222, - 2.5, - 4.833333333, - 7.5, - 8.888888889, - 4, - 7.388888889, - 3.888888889, - 1.611111111, - -0.333333333, - -2, - 4.833333333, - -1.055555556, - -5.611111111, - -2.388888889, - 5.722222222, - 8.444444444, - 5.277777778, - 0.5, - -2.5, - 1.111111111, - 2.111111111, - 5.777777778, - 7.555555556, - 7.555555556, - 4.111111111, - -0.388888889, - -1, - 4.944444444, - 9.444444444, - 4.722222222, - -0.166666667, - 0.5, - -2.444444444, - -2.722222222, - -2.888888889, - -1.111111111, - -4.944444444, - -3.111111111, - -1.444444444, - -0.833333333, - 2.333333333, - 6.833333333, - 4.722222222, - 0.888888889, - 0.666666667, - 4.611111111, - 4.666666667, - 4.444444444, - 6.777777778, - 5.833333333, - 0.5, - 4.888888889, - 1.444444444, - -2.111111111, - 2.444444444, - -0.111111111, - -2.555555556, - -4.611111111, - -8.666666667, - -8.055555556, - 1.555555556, - -4.777777778, -] -min = [ - -14.33333333, - -12.9, - -3.311111111, - -4.955555556, - -3.611111111, - 0.555555556, - 1.133333333, - -5.133333333, - 2.3, - 3.911111111, - -7.055555556, - -1.366666667, - -4.844444444, - -3.333333333, - -6.1, - -17.15555556, - -4.822222222, - 0.4, - 3.488888889, - 4.211111111, - -6.433333333, - -7.577777778, - -7.111111111, - -7.088888889, - 1.577777778, - -3.433333333, - -4.355555556, - -0.722222222, - -2.1, - 2.044444444, - 2.222222222, - -4.7, - -2.388888889, - 4.111111111, - -5, - -0.133333333, - -5.3, - -2.288888889, - 6.022222222, - -1.766666667, - -15.53333333, - -13.46666667, - -9.277777778, - -3.211111111, - 3.122222222, - 1.411111111, - -6.8, - 1.388888889, - 5.333333333, - -9.833333333, - -22, - -19.74444444, - -14.62222222, - -9.622222222, - -8.433333333, - -8.5, - -2.8, - 0.144444444, - -3.233333333, - -3.411111111, - 5.355555556, - 8.366666667, - 7.333333333, - -0.322222222, - -6.911111111, - -4.955555556, - -1.588888889, - 4.966666667, - 2.5, - -4.3, - -1.888888889, - -1.777777778, - 2.477777778, - 3.766666667, - 0.533333333, - 1.755555556, - 2.944444444, - -4.977777778, - -4.055555556, - 1.711111111, - 6.011111111, - 13.15555556, - 5.044444444, - 6.577777778, - 3.388888889, - -1.011111111, - -0.244444444, - -2.477777778, - -1.444444444, - 2.533333333, - -6.333333333, - 4.255555556, - 1.944444444, - 0.855555556, - 5.4, - -1.244444444, - -2.855555556, - 4.833333333, - 2.722222222, - 6.466666667, - 14.5, - 9.855555556, - 2.277777778, - -3.188888889, - 0.788888889, - 4.155555556, - 13.41111111, - 2.3, - 0.855555556, - 8.4, - -0.444444444, - 1.166666667, - 7.755555556, - -0.288888889, - -0.244444444, - 8.7, - 5.555555556, - 8.222222222, - 16.26666667, - 14.4, - 5.711111111, - 5.177777778, - 4.511111111, - 5.988888889, - 10.08888889, - 10.52222222, - 15.37777778, - 12.42222222, - 14.95555556, - 15.22222222, - 11.93333333, - 6.866666667, - 6.866666667, - 9.688888889, - 11.57777778, - 12, - 13.34444444, - 11.3, - 6.222222222, - 2.088888889, - 8.322222222, - 14.05555556, - 13.77777778, - 16.91111111, - 16.86666667, - 16.68888889, - 18.5, - 12.54444444, - 12.27777778, - 15.91111111, - 15.03333333, - 22.11111111, - 15.77777778, - 13.68888889, - 17.87777778, - 19.94444444, - 18.57777778, - 18.62222222, - 20.11111111, - 17.14444444, - 20.43333333, - 15.75555556, - 17.33333333, - 20, - 23.03333333, - 19.61111111, - 18.51111111, - 15.27777778, - 11.44444444, - 13.64444444, - 11.42222222, - 16.14444444, - 19.76666667, - 18.77777778, - 11.88888889, - 12.32222222, - 20.78888889, - 25.04444444, - 25.34444444, - 23.81111111, - 18.35555556, - 11.85555556, - 18.37777778, - 23.15555556, - 21.55555556, - 17.48888889, - 19.05555556, - 20.25555556, - 23.86666667, - 23.86666667, - 21.41111111, - 21.16666667, - 18.67777778, - 18.1, - 24.4, - 19.01111111, - 17.13333333, - 18.27777778, - 21.71111111, - 22.85555556, - 22.65555556, - 25.14444444, - 24.13333333, - 17.95555556, - 14.7, - 15.1, - 16.02222222, - 14.27777778, - 11.18888889, - 13.65555556, - 16.74444444, - 16.7, - 17.65555556, - 16.62222222, - 21.68888889, - 19.6, - 18.6, - 15.52222222, - 18.53333333, - 17.01111111, - 17.75555556, - 20.47777778, - 17.76666667, - 22.22222222, - 18.23333333, - 17.83333333, - 15.38888889, - 19.64444444, - 17.81111111, - 15.44444444, - 14.88888889, - 13.07777778, - 15.24444444, - 11.82222222, - 20.81111111, - 21.45555556, - 18.98888889, - 19.71111111, - 19.27777778, - 12.7, - 15.05555556, - 19.15555556, - 20.77777778, - 15.35555556, - 17.68888889, - 18.26666667, - 15.47777778, - 12.76666667, - 10.54444444, - 13.38888889, - 12.54444444, - 19.84444444, - 19.5, - 21.92222222, - 17.86666667, - 22.44444444, - 19.64444444, - 20.73333333, - 22.02222222, - 19, - 20.48888889, - 19.02222222, - 16.44444444, - 14.22222222, - 16.3, - 16.42222222, - 17.22222222, - 8.322222222, - 8.288888889, - 13.95555556, - 5.555555556, - 5.666666667, - 7.7, - 4.022222222, - 11.77777778, - 16.42222222, - 11.83333333, - 9.7, - 0.044444444, - 3.688888889, - -2.077777778, - 0.1, - -5.388888889, - -3.244444444, - 0.688888889, - 5.744444444, - -7.7, - -7.022222222, - -0.211111111, - 4.833333333, - 8.111111111, - 5.766666667, - 7.888888889, - 10.43333333, - 11.56666667, - 10.15555556, - 7.155555556, - 4.522222222, - 7.144444444, - 10.88888889, - 9.5, - 12.13333333, - 4.022222222, - -3.9, - 1.433333333, - 0.7, - 3.188888889, - -1.7, - 3.588888889, - -0.111111111, - -2.788888889, - -7.133333333, - -5, - 0.733333333, - -7.555555556, - -12.51111111, - -8.188888889, - 3.122222222, - 2.944444444, - 0.477777778, - -3.2, - -9.2, - -4.788888889, - -0.288888889, - 1.077777778, - 4.755555556, - 5.455555556, - 0.511111111, - -3.888888889, - -7.4, - -1.355555556, - 5.144444444, - 0.122222222, - -5.166666667, - -5, - -5.144444444, - -8.822222222, - -6.388888889, - -6.811111111, - -8.944444444, - -10.11111111, - -7.144444444, - -5.133333333, - -1.166666667, - 1.833333333, - -1.477777778, - -1.811111111, - -2.433333333, - -1.188888889, - -2.333333333, - 0.744444444, - 1.877777778, - 1.333333333, - -1.7, - 0.888888889, - -3.855555556, - -8.211111111, - -1.055555556, - -4.211111111, - -7.355555556, - -8.111111111, - -10.96666667, - -13.05555556, - -4.644444444, - -7.577777778, -] -max = [ - -7.233333333, - -1.6, - 5.488888889, - 7.744444444, - 6.188888889, - 6.555555556, - 10.53333333, - 6.766666667, - 14.1, - 14.11111111, - 2.044444444, - 4.633333333, - 2.055555556, - 8.666666667, - -1.4, - -5.555555556, - 4.177777778, - 11.8, - 15.58888889, - 12.31111111, - 3.666666667, - -0.977777778, - 1.288888889, - 4.211111111, - 9.377777778, - 5.266666667, - 2.144444444, - 3.977777778, - 7.2, - 11.94444444, - 11.32222222, - 4, - 6.611111111, - 8.211111111, - 3.5, - 8.866666667, - 3.6, - 3.711111111, - 13.12222222, - 7.833333333, - -3.333333333, - -2.166666667, - -2.877777778, - 5.188888889, - 13.12222222, - 12.11111111, - -0.7, - 6.688888889, - 14.03333333, - -2.433333333, - -8.6, - -8.244444444, - -2.122222222, - -2.722222222, - 1.266666667, - 2.8, - 5.7, - 6.944444444, - 5.066666667, - 5.688888889, - 13.35555556, - 16.66666667, - 17.33333333, - 7.277777778, - 6.388888889, - 1.344444444, - 9.111111111, - 17.96666667, - 12.8, - 5.8, - 6.911111111, - 6.822222222, - 11.87777778, - 13.16666667, - 9.233333333, - 8.655555556, - 10.04444444, - 7.022222222, - 7.644444444, - 8.311111111, - 16.71111111, - 18.85555556, - 12.14444444, - 13.27777778, - 11.18888889, - 7.088888889, - 8.255555556, - 7.522222222, - 9.955555556, - 9.933333333, - 4.866666667, - 15.25555556, - 9.244444444, - 9.755555556, - 14, - 8.955555556, - 2.344444444, - 17.43333333, - 12.12222222, - 13.46666667, - 23, - 18.45555556, - 12.77777778, - 7.211111111, - 8.588888889, - 14.35555556, - 19.01111111, - 12.4, - 9.155555556, - 15.6, - 4.955555556, - 8.966666667, - 16.95555556, - 9.511111111, - 10.15555556, - 16, - 14.45555556, - 21.02222222, - 25.76666667, - 20.5, - 15.71111111, - 11.67777778, - 12.81111111, - 12.88888889, - 17.58888889, - 23.12222222, - 21.77777778, - 24.42222222, - 20.05555556, - 24.32222222, - 18.83333333, - 19.56666667, - 14.96666667, - 19.68888889, - 18.57777778, - 23, - 23.34444444, - 20.7, - 11.82222222, - 11.48888889, - 17.52222222, - 22.55555556, - 20.47777778, - 23.01111111, - 27.86666667, - 30.28888889, - 30.3, - 22.94444444, - 18.57777778, - 25.51111111, - 24.13333333, - 30.01111111, - 24.77777778, - 20.28888889, - 28.67777778, - 32.74444444, - 31.37777778, - 28.52222222, - 31.81111111, - 27.24444444, - 32.53333333, - 26.15555556, - 24.63333333, - 28.3, - 31.23333333, - 32.21111111, - 28.21111111, - 23.07777778, - 21.64444444, - 24.34444444, - 19.62222222, - 25.14444444, - 24.46666667, - 23.87777778, - 21.28888889, - 20.22222222, - 29.98888889, - 32.04444444, - 36.44444444, - 36.01111111, - 24.85555556, - 23.45555556, - 29.17777778, - 32.25555556, - 28.75555556, - 30.28888889, - 28.85555556, - 30.45555556, - 31.26666667, - 28.86666667, - 33.31111111, - 30.66666667, - 28.67777778, - 27.4, - 32.2, - 25.41111111, - 22.23333333, - 26.67777778, - 30.21111111, - 29.15555556, - 29.65555556, - 31.94444444, - 31.43333333, - 28.35555556, - 24.8, - 25.5, - 25.42222222, - 24.17777778, - 20.88888889, - 24.35555556, - 25.54444444, - 22, - 27.95555556, - 29.42222222, - 28.88888889, - 26.8, - 28.2, - 26.92222222, - 24.13333333, - 22.61111111, - 26.15555556, - 30.57777778, - 30.86666667, - 29.92222222, - 27.33333333, - 23.43333333, - 24.68888889, - 26.94444444, - 28.81111111, - 25.54444444, - 22.48888889, - 21.67777778, - 19.74444444, - 23.82222222, - 25.91111111, - 30.85555556, - 28.48888889, - 29.21111111, - 28.37777778, - 22.4, - 25.55555556, - 27.35555556, - 30.67777778, - 27.95555556, - 25.98888889, - 23.46666667, - 25.37777778, - 20.46666667, - 22.54444444, - 20.18888889, - 22.24444444, - 26.84444444, - 25.8, - 29.62222222, - 26.36666667, - 32.24444444, - 29.84444444, - 28.33333333, - 31.22222222, - 29.9, - 29.98888889, - 27.42222222, - 25.54444444, - 20.22222222, - 24, - 24.52222222, - 25.02222222, - 16.12222222, - 17.58888889, - 23.25555556, - 15.75555556, - 18.66666667, - 18.4, - 12.52222222, - 20.07777778, - 28.62222222, - 17.23333333, - 16.6, - 13.34444444, - 10.98888889, - 9.522222222, - 5.8, - 6.811111111, - 6.555555556, - 12.18888889, - 12.64444444, - 4.2, - 3.577777778, - 8.888888889, - 15.23333333, - 16.11111111, - 18.36666667, - 16.98888889, - 15.63333333, - 16.46666667, - 15.55555556, - 15.65555556, - 17.42222222, - 18.74444444, - 19.48888889, - 15.9, - 19.73333333, - 13.02222222, - 8.1, - 8.933333333, - 11.3, - 12.38888889, - 8.3, - 12.38888889, - 6.388888889, - 4.211111111, - 4.666666667, - 0.7, - 7.133333333, - 2.344444444, - 1.088888889, - 0.111111111, - 11.62222222, - 10.84444444, - 8.777777778, - 3.5, - 3.4, - 7.211111111, - 5.711111111, - 9.677777778, - 12.25555556, - 10.15555556, - 6.511111111, - 4.911111111, - 1.5, - 11.44444444, - 15.54444444, - 8.122222222, - 6.233333333, - 7, - 4.355555556, - 0.277777778, - 3.711111111, - 2.888888889, - 1.555555556, - 3.888888889, - 4.555555556, - 5.666666667, - 7.833333333, - 9.833333333, - 10.02222222, - 6.288888889, - 5.366666667, - 11.41111111, - 9.566666667, - 9.744444444, - 13.57777778, - 9.433333333, - 3.1, - 11.08888889, - 3.844444444, - 2.488888889, - 7.544444444, - 4.488888889, - -0.455555556, - -2.111111111, - -3.566666667, - -1.955555556, - 3.955555556, - 1.222222222, -] -week_number = [f"W{i//7}" if i % 7 == 0 else None for i in range(0, 365)] +if __name__ == "__main__": + dates = pandas.date_range("2023-01-01", periods=365, freq="D") + temp = [ + -11.33333333, + -6, + -0.111111111, + 1.444444444, + 2.388888889, + 4.555555556, + 4.333333333, + 0.666666667, + 9, + 9.611111111, + -0.555555556, + 1.833333333, + -0.444444444, + 2.166666667, + -4, + -12.05555556, + -2.722222222, + 5, + 9.888888889, + 6.611111111, + -2.833333333, + -3.277777778, + -1.611111111, + -1.388888889, + 5.777777778, + 2.166666667, + -1.055555556, + 1.777777778, + 1.5, + 8.444444444, + 6.222222222, + -2.5, + -0.388888889, + 6.111111111, + -1.5, + 2.666666667, + -2.5, + 0.611111111, + 8.222222222, + 2.333333333, + -9.333333333, + -7.666666667, + -6.277777778, + -0.611111111, + 7.722222222, + 6.111111111, + -4, + 3.388888889, + 9.333333333, + -6.333333333, + -15, + -12.94444444, + -8.722222222, + -6.222222222, + -2.833333333, + -2.5, + 1.5, + 3.444444444, + 2.666666667, + 0.888888889, + 7.555555556, + 12.66666667, + 12.83333333, + 1.777777778, + -0.111111111, + -1.055555556, + 4.611111111, + 11.16666667, + 8.5, + 0.5, + 2.111111111, + 4.722222222, + 8.277777778, + 10.66666667, + 5.833333333, + 5.555555556, + 6.944444444, + 1.722222222, + 2.444444444, + 6.111111111, + 12.11111111, + 15.55555556, + 9.944444444, + 10.27777778, + 5.888888889, + 1.388888889, + 3.555555556, + 1.222222222, + 4.055555556, + 7.833333333, + 0.666666667, + 10.05555556, + 6.444444444, + 4.555555556, + 11, + 3.555555556, + -0.555555556, + 11.83333333, + 7.222222222, + 10.16666667, + 17.5, + 14.55555556, + 6.777777778, + 3.611111111, + 5.888888889, + 10.05555556, + 16.61111111, + 5.5, + 7.055555556, + 10.5, + 1.555555556, + 6.166666667, + 11.05555556, + 5.111111111, + 6.055555556, + 11, + 11.05555556, + 14.72222222, + 19.16666667, + 16.5, + 12.61111111, + 8.277777778, + 6.611111111, + 10.38888889, + 15.38888889, + 17.22222222, + 18.27777778, + 18.72222222, + 17.05555556, + 19.72222222, + 16.83333333, + 12.66666667, + 11.66666667, + 12.88888889, + 14.77777778, + 18, + 19.44444444, + 16.5, + 9.722222222, + 7.888888889, + 13.72222222, + 17.55555556, + 18.27777778, + 20.11111111, + 21.66666667, + 23.38888889, + 23.5, + 16.94444444, + 16.27777778, + 18.61111111, + 20.83333333, + 24.61111111, + 18.27777778, + 17.88888889, + 22.27777778, + 25.94444444, + 25.27777778, + 24.72222222, + 25.61111111, + 23.94444444, + 26.33333333, + 22.05555556, + 20.83333333, + 24.5, + 27.83333333, + 25.61111111, + 23.11111111, + 19.27777778, + 16.44444444, + 19.44444444, + 17.22222222, + 19.44444444, + 22.16666667, + 21.77777778, + 17.38888889, + 17.22222222, + 23.88888889, + 28.44444444, + 29.44444444, + 29.61111111, + 21.05555556, + 18.55555556, + 25.27777778, + 26.55555556, + 24.55555556, + 23.38888889, + 22.55555556, + 27.05555556, + 27.66666667, + 26.66666667, + 27.61111111, + 26.66666667, + 24.77777778, + 23, + 26.5, + 23.11111111, + 19.83333333, + 22.27777778, + 24.61111111, + 27.05555556, + 27.05555556, + 27.94444444, + 27.33333333, + 22.05555556, + 21.5, + 22, + 19.72222222, + 20.27777778, + 17.88888889, + 18.55555556, + 18.94444444, + 20, + 22.05555556, + 23.22222222, + 24.38888889, + 24.5, + 24.5, + 21.22222222, + 20.83333333, + 20.61111111, + 22.05555556, + 23.77777778, + 24.16666667, + 24.22222222, + 21.83333333, + 21.33333333, + 21.88888889, + 22.44444444, + 23.11111111, + 20.44444444, + 16.88888889, + 15.77777778, + 17.44444444, + 17.72222222, + 23.11111111, + 24.55555556, + 24.88888889, + 25.11111111, + 25.27777778, + 19.5, + 19.55555556, + 24.05555556, + 24.27777778, + 21.05555556, + 19.88888889, + 20.66666667, + 20.27777778, + 17.66666667, + 16.44444444, + 15.88888889, + 18.44444444, + 22.44444444, + 23, + 24.72222222, + 24.16666667, + 25.94444444, + 24.44444444, + 23.33333333, + 25.22222222, + 25, + 23.88888889, + 23.72222222, + 18.94444444, + 16.22222222, + 19.5, + 21.22222222, + 19.72222222, + 13.22222222, + 11.88888889, + 16.55555556, + 10.05555556, + 12.16666667, + 11.5, + 10.22222222, + 17.27777778, + 21.72222222, + 13.83333333, + 13, + 6.944444444, + 6.388888889, + 4.222222222, + 2.5, + 1.111111111, + 3.055555556, + 6.388888889, + 10.44444444, + -2, + -2.222222222, + 4.388888889, + 8.333333333, + 11.11111111, + 12.66666667, + 10.88888889, + 12.83333333, + 14.16666667, + 12.55555556, + 12.05555556, + 11.22222222, + 12.44444444, + 14.38888889, + 12, + 15.83333333, + 6.722222222, + 2.5, + 4.833333333, + 7.5, + 8.888888889, + 4, + 7.388888889, + 3.888888889, + 1.611111111, + -0.333333333, + -2, + 4.833333333, + -1.055555556, + -5.611111111, + -2.388888889, + 5.722222222, + 8.444444444, + 5.277777778, + 0.5, + -2.5, + 1.111111111, + 2.111111111, + 5.777777778, + 7.555555556, + 7.555555556, + 4.111111111, + -0.388888889, + -1, + 4.944444444, + 9.444444444, + 4.722222222, + -0.166666667, + 0.5, + -2.444444444, + -2.722222222, + -2.888888889, + -1.111111111, + -4.944444444, + -3.111111111, + -1.444444444, + -0.833333333, + 2.333333333, + 6.833333333, + 4.722222222, + 0.888888889, + 0.666666667, + 4.611111111, + 4.666666667, + 4.444444444, + 6.777777778, + 5.833333333, + 0.5, + 4.888888889, + 1.444444444, + -2.111111111, + 2.444444444, + -0.111111111, + -2.555555556, + -4.611111111, + -8.666666667, + -8.055555556, + 1.555555556, + -4.777777778, + ] + min = [ + -14.33333333, + -12.9, + -3.311111111, + -4.955555556, + -3.611111111, + 0.555555556, + 1.133333333, + -5.133333333, + 2.3, + 3.911111111, + -7.055555556, + -1.366666667, + -4.844444444, + -3.333333333, + -6.1, + -17.15555556, + -4.822222222, + 0.4, + 3.488888889, + 4.211111111, + -6.433333333, + -7.577777778, + -7.111111111, + -7.088888889, + 1.577777778, + -3.433333333, + -4.355555556, + -0.722222222, + -2.1, + 2.044444444, + 2.222222222, + -4.7, + -2.388888889, + 4.111111111, + -5, + -0.133333333, + -5.3, + -2.288888889, + 6.022222222, + -1.766666667, + -15.53333333, + -13.46666667, + -9.277777778, + -3.211111111, + 3.122222222, + 1.411111111, + -6.8, + 1.388888889, + 5.333333333, + -9.833333333, + -22, + -19.74444444, + -14.62222222, + -9.622222222, + -8.433333333, + -8.5, + -2.8, + 0.144444444, + -3.233333333, + -3.411111111, + 5.355555556, + 8.366666667, + 7.333333333, + -0.322222222, + -6.911111111, + -4.955555556, + -1.588888889, + 4.966666667, + 2.5, + -4.3, + -1.888888889, + -1.777777778, + 2.477777778, + 3.766666667, + 0.533333333, + 1.755555556, + 2.944444444, + -4.977777778, + -4.055555556, + 1.711111111, + 6.011111111, + 13.15555556, + 5.044444444, + 6.577777778, + 3.388888889, + -1.011111111, + -0.244444444, + -2.477777778, + -1.444444444, + 2.533333333, + -6.333333333, + 4.255555556, + 1.944444444, + 0.855555556, + 5.4, + -1.244444444, + -2.855555556, + 4.833333333, + 2.722222222, + 6.466666667, + 14.5, + 9.855555556, + 2.277777778, + -3.188888889, + 0.788888889, + 4.155555556, + 13.41111111, + 2.3, + 0.855555556, + 8.4, + -0.444444444, + 1.166666667, + 7.755555556, + -0.288888889, + -0.244444444, + 8.7, + 5.555555556, + 8.222222222, + 16.26666667, + 14.4, + 5.711111111, + 5.177777778, + 4.511111111, + 5.988888889, + 10.08888889, + 10.52222222, + 15.37777778, + 12.42222222, + 14.95555556, + 15.22222222, + 11.93333333, + 6.866666667, + 6.866666667, + 9.688888889, + 11.57777778, + 12, + 13.34444444, + 11.3, + 6.222222222, + 2.088888889, + 8.322222222, + 14.05555556, + 13.77777778, + 16.91111111, + 16.86666667, + 16.68888889, + 18.5, + 12.54444444, + 12.27777778, + 15.91111111, + 15.03333333, + 22.11111111, + 15.77777778, + 13.68888889, + 17.87777778, + 19.94444444, + 18.57777778, + 18.62222222, + 20.11111111, + 17.14444444, + 20.43333333, + 15.75555556, + 17.33333333, + 20, + 23.03333333, + 19.61111111, + 18.51111111, + 15.27777778, + 11.44444444, + 13.64444444, + 11.42222222, + 16.14444444, + 19.76666667, + 18.77777778, + 11.88888889, + 12.32222222, + 20.78888889, + 25.04444444, + 25.34444444, + 23.81111111, + 18.35555556, + 11.85555556, + 18.37777778, + 23.15555556, + 21.55555556, + 17.48888889, + 19.05555556, + 20.25555556, + 23.86666667, + 23.86666667, + 21.41111111, + 21.16666667, + 18.67777778, + 18.1, + 24.4, + 19.01111111, + 17.13333333, + 18.27777778, + 21.71111111, + 22.85555556, + 22.65555556, + 25.14444444, + 24.13333333, + 17.95555556, + 14.7, + 15.1, + 16.02222222, + 14.27777778, + 11.18888889, + 13.65555556, + 16.74444444, + 16.7, + 17.65555556, + 16.62222222, + 21.68888889, + 19.6, + 18.6, + 15.52222222, + 18.53333333, + 17.01111111, + 17.75555556, + 20.47777778, + 17.76666667, + 22.22222222, + 18.23333333, + 17.83333333, + 15.38888889, + 19.64444444, + 17.81111111, + 15.44444444, + 14.88888889, + 13.07777778, + 15.24444444, + 11.82222222, + 20.81111111, + 21.45555556, + 18.98888889, + 19.71111111, + 19.27777778, + 12.7, + 15.05555556, + 19.15555556, + 20.77777778, + 15.35555556, + 17.68888889, + 18.26666667, + 15.47777778, + 12.76666667, + 10.54444444, + 13.38888889, + 12.54444444, + 19.84444444, + 19.5, + 21.92222222, + 17.86666667, + 22.44444444, + 19.64444444, + 20.73333333, + 22.02222222, + 19, + 20.48888889, + 19.02222222, + 16.44444444, + 14.22222222, + 16.3, + 16.42222222, + 17.22222222, + 8.322222222, + 8.288888889, + 13.95555556, + 5.555555556, + 5.666666667, + 7.7, + 4.022222222, + 11.77777778, + 16.42222222, + 11.83333333, + 9.7, + 0.044444444, + 3.688888889, + -2.077777778, + 0.1, + -5.388888889, + -3.244444444, + 0.688888889, + 5.744444444, + -7.7, + -7.022222222, + -0.211111111, + 4.833333333, + 8.111111111, + 5.766666667, + 7.888888889, + 10.43333333, + 11.56666667, + 10.15555556, + 7.155555556, + 4.522222222, + 7.144444444, + 10.88888889, + 9.5, + 12.13333333, + 4.022222222, + -3.9, + 1.433333333, + 0.7, + 3.188888889, + -1.7, + 3.588888889, + -0.111111111, + -2.788888889, + -7.133333333, + -5, + 0.733333333, + -7.555555556, + -12.51111111, + -8.188888889, + 3.122222222, + 2.944444444, + 0.477777778, + -3.2, + -9.2, + -4.788888889, + -0.288888889, + 1.077777778, + 4.755555556, + 5.455555556, + 0.511111111, + -3.888888889, + -7.4, + -1.355555556, + 5.144444444, + 0.122222222, + -5.166666667, + -5, + -5.144444444, + -8.822222222, + -6.388888889, + -6.811111111, + -8.944444444, + -10.11111111, + -7.144444444, + -5.133333333, + -1.166666667, + 1.833333333, + -1.477777778, + -1.811111111, + -2.433333333, + -1.188888889, + -2.333333333, + 0.744444444, + 1.877777778, + 1.333333333, + -1.7, + 0.888888889, + -3.855555556, + -8.211111111, + -1.055555556, + -4.211111111, + -7.355555556, + -8.111111111, + -10.96666667, + -13.05555556, + -4.644444444, + -7.577777778, + ] + max = [ + -7.233333333, + -1.6, + 5.488888889, + 7.744444444, + 6.188888889, + 6.555555556, + 10.53333333, + 6.766666667, + 14.1, + 14.11111111, + 2.044444444, + 4.633333333, + 2.055555556, + 8.666666667, + -1.4, + -5.555555556, + 4.177777778, + 11.8, + 15.58888889, + 12.31111111, + 3.666666667, + -0.977777778, + 1.288888889, + 4.211111111, + 9.377777778, + 5.266666667, + 2.144444444, + 3.977777778, + 7.2, + 11.94444444, + 11.32222222, + 4, + 6.611111111, + 8.211111111, + 3.5, + 8.866666667, + 3.6, + 3.711111111, + 13.12222222, + 7.833333333, + -3.333333333, + -2.166666667, + -2.877777778, + 5.188888889, + 13.12222222, + 12.11111111, + -0.7, + 6.688888889, + 14.03333333, + -2.433333333, + -8.6, + -8.244444444, + -2.122222222, + -2.722222222, + 1.266666667, + 2.8, + 5.7, + 6.944444444, + 5.066666667, + 5.688888889, + 13.35555556, + 16.66666667, + 17.33333333, + 7.277777778, + 6.388888889, + 1.344444444, + 9.111111111, + 17.96666667, + 12.8, + 5.8, + 6.911111111, + 6.822222222, + 11.87777778, + 13.16666667, + 9.233333333, + 8.655555556, + 10.04444444, + 7.022222222, + 7.644444444, + 8.311111111, + 16.71111111, + 18.85555556, + 12.14444444, + 13.27777778, + 11.18888889, + 7.088888889, + 8.255555556, + 7.522222222, + 9.955555556, + 9.933333333, + 4.866666667, + 15.25555556, + 9.244444444, + 9.755555556, + 14, + 8.955555556, + 2.344444444, + 17.43333333, + 12.12222222, + 13.46666667, + 23, + 18.45555556, + 12.77777778, + 7.211111111, + 8.588888889, + 14.35555556, + 19.01111111, + 12.4, + 9.155555556, + 15.6, + 4.955555556, + 8.966666667, + 16.95555556, + 9.511111111, + 10.15555556, + 16, + 14.45555556, + 21.02222222, + 25.76666667, + 20.5, + 15.71111111, + 11.67777778, + 12.81111111, + 12.88888889, + 17.58888889, + 23.12222222, + 21.77777778, + 24.42222222, + 20.05555556, + 24.32222222, + 18.83333333, + 19.56666667, + 14.96666667, + 19.68888889, + 18.57777778, + 23, + 23.34444444, + 20.7, + 11.82222222, + 11.48888889, + 17.52222222, + 22.55555556, + 20.47777778, + 23.01111111, + 27.86666667, + 30.28888889, + 30.3, + 22.94444444, + 18.57777778, + 25.51111111, + 24.13333333, + 30.01111111, + 24.77777778, + 20.28888889, + 28.67777778, + 32.74444444, + 31.37777778, + 28.52222222, + 31.81111111, + 27.24444444, + 32.53333333, + 26.15555556, + 24.63333333, + 28.3, + 31.23333333, + 32.21111111, + 28.21111111, + 23.07777778, + 21.64444444, + 24.34444444, + 19.62222222, + 25.14444444, + 24.46666667, + 23.87777778, + 21.28888889, + 20.22222222, + 29.98888889, + 32.04444444, + 36.44444444, + 36.01111111, + 24.85555556, + 23.45555556, + 29.17777778, + 32.25555556, + 28.75555556, + 30.28888889, + 28.85555556, + 30.45555556, + 31.26666667, + 28.86666667, + 33.31111111, + 30.66666667, + 28.67777778, + 27.4, + 32.2, + 25.41111111, + 22.23333333, + 26.67777778, + 30.21111111, + 29.15555556, + 29.65555556, + 31.94444444, + 31.43333333, + 28.35555556, + 24.8, + 25.5, + 25.42222222, + 24.17777778, + 20.88888889, + 24.35555556, + 25.54444444, + 22, + 27.95555556, + 29.42222222, + 28.88888889, + 26.8, + 28.2, + 26.92222222, + 24.13333333, + 22.61111111, + 26.15555556, + 30.57777778, + 30.86666667, + 29.92222222, + 27.33333333, + 23.43333333, + 24.68888889, + 26.94444444, + 28.81111111, + 25.54444444, + 22.48888889, + 21.67777778, + 19.74444444, + 23.82222222, + 25.91111111, + 30.85555556, + 28.48888889, + 29.21111111, + 28.37777778, + 22.4, + 25.55555556, + 27.35555556, + 30.67777778, + 27.95555556, + 25.98888889, + 23.46666667, + 25.37777778, + 20.46666667, + 22.54444444, + 20.18888889, + 22.24444444, + 26.84444444, + 25.8, + 29.62222222, + 26.36666667, + 32.24444444, + 29.84444444, + 28.33333333, + 31.22222222, + 29.9, + 29.98888889, + 27.42222222, + 25.54444444, + 20.22222222, + 24, + 24.52222222, + 25.02222222, + 16.12222222, + 17.58888889, + 23.25555556, + 15.75555556, + 18.66666667, + 18.4, + 12.52222222, + 20.07777778, + 28.62222222, + 17.23333333, + 16.6, + 13.34444444, + 10.98888889, + 9.522222222, + 5.8, + 6.811111111, + 6.555555556, + 12.18888889, + 12.64444444, + 4.2, + 3.577777778, + 8.888888889, + 15.23333333, + 16.11111111, + 18.36666667, + 16.98888889, + 15.63333333, + 16.46666667, + 15.55555556, + 15.65555556, + 17.42222222, + 18.74444444, + 19.48888889, + 15.9, + 19.73333333, + 13.02222222, + 8.1, + 8.933333333, + 11.3, + 12.38888889, + 8.3, + 12.38888889, + 6.388888889, + 4.211111111, + 4.666666667, + 0.7, + 7.133333333, + 2.344444444, + 1.088888889, + 0.111111111, + 11.62222222, + 10.84444444, + 8.777777778, + 3.5, + 3.4, + 7.211111111, + 5.711111111, + 9.677777778, + 12.25555556, + 10.15555556, + 6.511111111, + 4.911111111, + 1.5, + 11.44444444, + 15.54444444, + 8.122222222, + 6.233333333, + 7, + 4.355555556, + 0.277777778, + 3.711111111, + 2.888888889, + 1.555555556, + 3.888888889, + 4.555555556, + 5.666666667, + 7.833333333, + 9.833333333, + 10.02222222, + 6.288888889, + 5.366666667, + 11.41111111, + 9.566666667, + 9.744444444, + 13.57777778, + 9.433333333, + 3.1, + 11.08888889, + 3.844444444, + 2.488888889, + 7.544444444, + 4.488888889, + -0.455555556, + -2.111111111, + -3.566666667, + -1.955555556, + 3.955555556, + 1.222222222, + ] + week_number = [f"W{i//7}" if i % 7 == 0 else None for i in range(0, 365)] -start = 50 -size = 100 -data = { - "Date": dates[start:size], - "Temp°C": temp[start:size], - "Week": numpy.array(max[start:size]) + 5, - "WeekN": week_number[start:size], -} + start = 50 + size = 100 + data = { + "Date": dates[start:size], + "Temp°C": temp[start:size], + "Week": numpy.array(max[start:size]) + 5, + "WeekN": week_number[start:size], + } -page = """ + page = """ # Line - Texts <|{data}|chart|x=Date|y[1]=Temp°C|y[2]=Week|mode[2]=text|text[2]=WeekN|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/map-bubbles.py b/doc/gui/examples/charts/map-bubbles.py index bf52f147c3..491dbebb50 100644 --- a/doc/gui/examples/charts/map-bubbles.py +++ b/doc/gui/examples/charts/map-bubbles.py @@ -18,135 +18,136 @@ from taipy.gui import Gui -# Largest cities: name, location and population -# Source: https://simplemaps.com/data/world-cities -cities = [ - {"name": "Tokyo", "lat": 35.6839, "lon": 139.7744, "population": 39105000}, - {"name": "Jakarta", "lat": -6.2146, "lon": 106.8451, "population": 35362000}, - {"name": "Delhi", "lat": 28.6667, "lon": 77.2167, "population": 31870000}, - {"name": "Manila", "lat": 14.6, "lon": 120.9833, "population": 23971000}, - {"name": "São Paulo", "lat": -23.5504, "lon": -46.6339, "population": 22495000}, - {"name": "Seoul", "lat": 37.56, "lon": 126.99, "population": 22394000}, - {"name": "Mumbai", "lat": 19.0758, "lon": 72.8775, "population": 22186000}, - {"name": "Shanghai", "lat": 31.1667, "lon": 121.4667, "population": 22118000}, - {"name": "Mexico City", "lat": 19.4333, "lon": -99.1333, "population": 21505000}, - {"name": "Guangzhou", "lat": 23.1288, "lon": 113.259, "population": 21489000}, - {"name": "Cairo", "lat": 30.0444, "lon": 31.2358, "population": 19787000}, - {"name": "Beijing", "lat": 39.904, "lon": 116.4075, "population": 19437000}, - {"name": "New York", "lat": 40.6943, "lon": -73.9249, "population": 18713220}, - {"name": "Kolkāta", "lat": 22.5727, "lon": 88.3639, "population": 18698000}, - {"name": "Moscow", "lat": 55.7558, "lon": 37.6178, "population": 17693000}, - {"name": "Bangkok", "lat": 13.75, "lon": 100.5167, "population": 17573000}, - {"name": "Dhaka", "lat": 23.7289, "lon": 90.3944, "population": 16839000}, - {"name": "Buenos Aires", "lat": -34.5997, "lon": -58.3819, "population": 16216000}, - {"name": "Ōsaka", "lat": 34.752, "lon": 135.4582, "population": 15490000}, - {"name": "Lagos", "lat": 6.45, "lon": 3.4, "population": 15487000}, - {"name": "Istanbul", "lat": 41.01, "lon": 28.9603, "population": 15311000}, - {"name": "Karachi", "lat": 24.86, "lon": 67.01, "population": 15292000}, - {"name": "Kinshasa", "lat": -4.3317, "lon": 15.3139, "population": 15056000}, - {"name": "Shenzhen", "lat": 22.535, "lon": 114.054, "population": 14678000}, - {"name": "Bangalore", "lat": 12.9791, "lon": 77.5913, "population": 13999000}, - {"name": "Ho Chi Minh City", "lat": 10.8167, "lon": 106.6333, "population": 13954000}, - {"name": "Tehran", "lat": 35.7, "lon": 51.4167, "population": 13819000}, - {"name": "Los Angeles", "lat": 34.1139, "lon": -118.4068, "population": 12750807}, - {"name": "Rio de Janeiro", "lat": -22.9083, "lon": -43.1964, "population": 12486000}, - {"name": "Chengdu", "lat": 30.66, "lon": 104.0633, "population": 11920000}, - {"name": "Baoding", "lat": 38.8671, "lon": 115.4845, "population": 11860000}, - {"name": "Chennai", "lat": 13.0825, "lon": 80.275, "population": 11564000}, - {"name": "Lahore", "lat": 31.5497, "lon": 74.3436, "population": 11148000}, - {"name": "London", "lat": 51.5072, "lon": -0.1275, "population": 11120000}, - {"name": "Paris", "lat": 48.8566, "lon": 2.3522, "population": 11027000}, - {"name": "Tianjin", "lat": 39.1467, "lon": 117.2056, "population": 10932000}, - {"name": "Linyi", "lat": 35.0606, "lon": 118.3425, "population": 10820000}, - {"name": "Shijiazhuang", "lat": 38.0422, "lon": 114.5086, "population": 10784600}, - {"name": "Zhengzhou", "lat": 34.7492, "lon": 113.6605, "population": 10136000}, - {"name": "Nanyang", "lat": 32.9987, "lon": 112.5292, "population": 10013600}, - {"name": "Hyderābād", "lat": 17.3617, "lon": 78.4747, "population": 9840000}, - {"name": "Wuhan", "lat": 30.5872, "lon": 114.2881, "population": 9729000}, - {"name": "Handan", "lat": 36.6116, "lon": 114.4894, "population": 9549700}, - {"name": "Nagoya", "lat": 35.1167, "lon": 136.9333, "population": 9522000}, - {"name": "Weifang", "lat": 36.7167, "lon": 119.1, "population": 9373000}, - {"name": "Lima", "lat": -12.06, "lon": -77.0375, "population": 8992000}, - {"name": "Zhoukou", "lat": 33.625, "lon": 114.6418, "population": 8953172}, - {"name": "Luanda", "lat": -8.8383, "lon": 13.2344, "population": 8883000}, - {"name": "Ganzhou", "lat": 25.8292, "lon": 114.9336, "population": 8677600}, - {"name": "Tongshan", "lat": 34.261, "lon": 117.1859, "population": 8669000}, - {"name": "Kuala Lumpur", "lat": 3.1478, "lon": 101.6953, "population": 8639000}, - {"name": "Chicago", "lat": 41.8373, "lon": -87.6862, "population": 8604203}, - {"name": "Heze", "lat": 35.2333, "lon": 115.4333, "population": 8287693}, - {"name": "Chongqing", "lat": 29.55, "lon": 106.5069, "population": 8261000}, - {"name": "Hanoi", "lat": 21.0245, "lon": 105.8412, "population": 8246600}, - {"name": "Fuyang", "lat": 32.8986, "lon": 115.8045, "population": 8200264}, - {"name": "Changsha", "lat": 28.1987, "lon": 112.9709, "population": 8154700}, - {"name": "Dongguan", "lat": 23.0475, "lon": 113.7493, "population": 8142000}, - {"name": "Jining", "lat": 35.4, "lon": 116.5667, "population": 8081905}, - {"name": "Jinan", "lat": 36.6667, "lon": 116.9833, "population": 7967400}, - {"name": "Pune", "lat": 18.5196, "lon": 73.8553, "population": 7948000}, - {"name": "Foshan", "lat": 23.0292, "lon": 113.1056, "population": 7905700}, - {"name": "Bogotá", "lat": 4.6126, "lon": -74.0705, "population": 7743955}, - {"name": "Ahmedabad", "lat": 23.03, "lon": 72.58, "population": 7717000}, - {"name": "Nanjing", "lat": 32.05, "lon": 118.7667, "population": 7729000}, - {"name": "Changchun", "lat": 43.9, "lon": 125.2, "population": 7674439}, - {"name": "Tangshan", "lat": 39.6292, "lon": 118.1742, "population": 7577289}, - {"name": "Cangzhou", "lat": 38.3037, "lon": 116.8452, "population": 7544300}, - {"name": "Dar es Salaam", "lat": -6.8, "lon": 39.2833, "population": 7461000}, - {"name": "Hefei", "lat": 31.8639, "lon": 117.2808, "population": 7457027}, - {"name": "Hong Kong", "lat": 22.3069, "lon": 114.1831, "population": 7398000}, - {"name": "Shaoyang", "lat": 27.2418, "lon": 111.4725, "population": 7370500}, - {"name": "Zhanjiang", "lat": 21.1967, "lon": 110.4031, "population": 7332000}, - {"name": "Shangqiu", "lat": 34.4259, "lon": 115.6467, "population": 7325300}, - {"name": "Nantong", "lat": 31.9829, "lon": 120.8873, "population": 7283622}, - {"name": "Yancheng", "lat": 33.3936, "lon": 120.1339, "population": 7260240}, - {"name": "Nanning", "lat": 22.8192, "lon": 108.315, "population": 7254100}, - {"name": "Hengyang", "lat": 26.8968, "lon": 112.5857, "population": 7243400}, - {"name": "Zhumadian", "lat": 32.9773, "lon": 114.0253, "population": 7231234}, - {"name": "Shenyang", "lat": 41.8039, "lon": 123.4258, "population": 7208000}, - {"name": "Xingtai", "lat": 37.0659, "lon": 114.4753, "population": 7104103}, - {"name": "Xi’an", "lat": 34.2667, "lon": 108.9, "population": 7090000}, - {"name": "Santiago", "lat": -33.45, "lon": -70.6667, "population": 7026000}, - {"name": "Yantai", "lat": 37.3997, "lon": 121.2664, "population": 6968202}, - {"name": "Riyadh", "lat": 24.65, "lon": 46.71, "population": 6889000}, - {"name": "Luoyang", "lat": 34.6587, "lon": 112.4245, "population": 6888500}, - {"name": "Kunming", "lat": 25.0433, "lon": 102.7061, "population": 6850000}, - {"name": "Shangrao", "lat": 28.4419, "lon": 117.9633, "population": 6810700}, - {"name": "Hangzhou", "lat": 30.25, "lon": 120.1675, "population": 6713000}, - {"name": "Bijie", "lat": 27.3019, "lon": 105.2863, "population": 6686100}, - {"name": "Quanzhou", "lat": 24.9139, "lon": 118.5858, "population": 6480000}, - {"name": "Miami", "lat": 25.7839, "lon": -80.2102, "population": 6445545}, - {"name": "Wuxi", "lat": 31.5667, "lon": 120.2833, "population": 6372624}, - {"name": "Huanggang", "lat": 30.45, "lon": 114.875, "population": 6333000}, - {"name": "Maoming", "lat": 21.6618, "lon": 110.9178, "population": 6313200}, - {"name": "Nanchong", "lat": 30.7991, "lon": 106.0784, "population": 6278614}, - {"name": "Zunyi", "lat": 27.705, "lon": 106.9336, "population": 6270700}, - {"name": "Qujing", "lat": 25.5102, "lon": 103.8029, "population": 6155400}, - {"name": "Baghdad", "lat": 33.35, "lon": 44.4167, "population": 6107000}, - {"name": "Xinyang", "lat": 32.1264, "lon": 114.0672, "population": 6109106}, -] +if __name__ == "__main__": + # Largest cities: name, location and population + # Source: https://simplemaps.com/data/world-cities + cities = [ + {"name": "Tokyo", "lat": 35.6839, "lon": 139.7744, "population": 39105000}, + {"name": "Jakarta", "lat": -6.2146, "lon": 106.8451, "population": 35362000}, + {"name": "Delhi", "lat": 28.6667, "lon": 77.2167, "population": 31870000}, + {"name": "Manila", "lat": 14.6, "lon": 120.9833, "population": 23971000}, + {"name": "São Paulo", "lat": -23.5504, "lon": -46.6339, "population": 22495000}, + {"name": "Seoul", "lat": 37.56, "lon": 126.99, "population": 22394000}, + {"name": "Mumbai", "lat": 19.0758, "lon": 72.8775, "population": 22186000}, + {"name": "Shanghai", "lat": 31.1667, "lon": 121.4667, "population": 22118000}, + {"name": "Mexico City", "lat": 19.4333, "lon": -99.1333, "population": 21505000}, + {"name": "Guangzhou", "lat": 23.1288, "lon": 113.259, "population": 21489000}, + {"name": "Cairo", "lat": 30.0444, "lon": 31.2358, "population": 19787000}, + {"name": "Beijing", "lat": 39.904, "lon": 116.4075, "population": 19437000}, + {"name": "New York", "lat": 40.6943, "lon": -73.9249, "population": 18713220}, + {"name": "Kolkāta", "lat": 22.5727, "lon": 88.3639, "population": 18698000}, + {"name": "Moscow", "lat": 55.7558, "lon": 37.6178, "population": 17693000}, + {"name": "Bangkok", "lat": 13.75, "lon": 100.5167, "population": 17573000}, + {"name": "Dhaka", "lat": 23.7289, "lon": 90.3944, "population": 16839000}, + {"name": "Buenos Aires", "lat": -34.5997, "lon": -58.3819, "population": 16216000}, + {"name": "Ōsaka", "lat": 34.752, "lon": 135.4582, "population": 15490000}, + {"name": "Lagos", "lat": 6.45, "lon": 3.4, "population": 15487000}, + {"name": "Istanbul", "lat": 41.01, "lon": 28.9603, "population": 15311000}, + {"name": "Karachi", "lat": 24.86, "lon": 67.01, "population": 15292000}, + {"name": "Kinshasa", "lat": -4.3317, "lon": 15.3139, "population": 15056000}, + {"name": "Shenzhen", "lat": 22.535, "lon": 114.054, "population": 14678000}, + {"name": "Bangalore", "lat": 12.9791, "lon": 77.5913, "population": 13999000}, + {"name": "Ho Chi Minh City", "lat": 10.8167, "lon": 106.6333, "population": 13954000}, + {"name": "Tehran", "lat": 35.7, "lon": 51.4167, "population": 13819000}, + {"name": "Los Angeles", "lat": 34.1139, "lon": -118.4068, "population": 12750807}, + {"name": "Rio de Janeiro", "lat": -22.9083, "lon": -43.1964, "population": 12486000}, + {"name": "Chengdu", "lat": 30.66, "lon": 104.0633, "population": 11920000}, + {"name": "Baoding", "lat": 38.8671, "lon": 115.4845, "population": 11860000}, + {"name": "Chennai", "lat": 13.0825, "lon": 80.275, "population": 11564000}, + {"name": "Lahore", "lat": 31.5497, "lon": 74.3436, "population": 11148000}, + {"name": "London", "lat": 51.5072, "lon": -0.1275, "population": 11120000}, + {"name": "Paris", "lat": 48.8566, "lon": 2.3522, "population": 11027000}, + {"name": "Tianjin", "lat": 39.1467, "lon": 117.2056, "population": 10932000}, + {"name": "Linyi", "lat": 35.0606, "lon": 118.3425, "population": 10820000}, + {"name": "Shijiazhuang", "lat": 38.0422, "lon": 114.5086, "population": 10784600}, + {"name": "Zhengzhou", "lat": 34.7492, "lon": 113.6605, "population": 10136000}, + {"name": "Nanyang", "lat": 32.9987, "lon": 112.5292, "population": 10013600}, + {"name": "Hyderābād", "lat": 17.3617, "lon": 78.4747, "population": 9840000}, + {"name": "Wuhan", "lat": 30.5872, "lon": 114.2881, "population": 9729000}, + {"name": "Handan", "lat": 36.6116, "lon": 114.4894, "population": 9549700}, + {"name": "Nagoya", "lat": 35.1167, "lon": 136.9333, "population": 9522000}, + {"name": "Weifang", "lat": 36.7167, "lon": 119.1, "population": 9373000}, + {"name": "Lima", "lat": -12.06, "lon": -77.0375, "population": 8992000}, + {"name": "Zhoukou", "lat": 33.625, "lon": 114.6418, "population": 8953172}, + {"name": "Luanda", "lat": -8.8383, "lon": 13.2344, "population": 8883000}, + {"name": "Ganzhou", "lat": 25.8292, "lon": 114.9336, "population": 8677600}, + {"name": "Tongshan", "lat": 34.261, "lon": 117.1859, "population": 8669000}, + {"name": "Kuala Lumpur", "lat": 3.1478, "lon": 101.6953, "population": 8639000}, + {"name": "Chicago", "lat": 41.8373, "lon": -87.6862, "population": 8604203}, + {"name": "Heze", "lat": 35.2333, "lon": 115.4333, "population": 8287693}, + {"name": "Chongqing", "lat": 29.55, "lon": 106.5069, "population": 8261000}, + {"name": "Hanoi", "lat": 21.0245, "lon": 105.8412, "population": 8246600}, + {"name": "Fuyang", "lat": 32.8986, "lon": 115.8045, "population": 8200264}, + {"name": "Changsha", "lat": 28.1987, "lon": 112.9709, "population": 8154700}, + {"name": "Dongguan", "lat": 23.0475, "lon": 113.7493, "population": 8142000}, + {"name": "Jining", "lat": 35.4, "lon": 116.5667, "population": 8081905}, + {"name": "Jinan", "lat": 36.6667, "lon": 116.9833, "population": 7967400}, + {"name": "Pune", "lat": 18.5196, "lon": 73.8553, "population": 7948000}, + {"name": "Foshan", "lat": 23.0292, "lon": 113.1056, "population": 7905700}, + {"name": "Bogotá", "lat": 4.6126, "lon": -74.0705, "population": 7743955}, + {"name": "Ahmedabad", "lat": 23.03, "lon": 72.58, "population": 7717000}, + {"name": "Nanjing", "lat": 32.05, "lon": 118.7667, "population": 7729000}, + {"name": "Changchun", "lat": 43.9, "lon": 125.2, "population": 7674439}, + {"name": "Tangshan", "lat": 39.6292, "lon": 118.1742, "population": 7577289}, + {"name": "Cangzhou", "lat": 38.3037, "lon": 116.8452, "population": 7544300}, + {"name": "Dar es Salaam", "lat": -6.8, "lon": 39.2833, "population": 7461000}, + {"name": "Hefei", "lat": 31.8639, "lon": 117.2808, "population": 7457027}, + {"name": "Hong Kong", "lat": 22.3069, "lon": 114.1831, "population": 7398000}, + {"name": "Shaoyang", "lat": 27.2418, "lon": 111.4725, "population": 7370500}, + {"name": "Zhanjiang", "lat": 21.1967, "lon": 110.4031, "population": 7332000}, + {"name": "Shangqiu", "lat": 34.4259, "lon": 115.6467, "population": 7325300}, + {"name": "Nantong", "lat": 31.9829, "lon": 120.8873, "population": 7283622}, + {"name": "Yancheng", "lat": 33.3936, "lon": 120.1339, "population": 7260240}, + {"name": "Nanning", "lat": 22.8192, "lon": 108.315, "population": 7254100}, + {"name": "Hengyang", "lat": 26.8968, "lon": 112.5857, "population": 7243400}, + {"name": "Zhumadian", "lat": 32.9773, "lon": 114.0253, "population": 7231234}, + {"name": "Shenyang", "lat": 41.8039, "lon": 123.4258, "population": 7208000}, + {"name": "Xingtai", "lat": 37.0659, "lon": 114.4753, "population": 7104103}, + {"name": "Xi’an", "lat": 34.2667, "lon": 108.9, "population": 7090000}, + {"name": "Santiago", "lat": -33.45, "lon": -70.6667, "population": 7026000}, + {"name": "Yantai", "lat": 37.3997, "lon": 121.2664, "population": 6968202}, + {"name": "Riyadh", "lat": 24.65, "lon": 46.71, "population": 6889000}, + {"name": "Luoyang", "lat": 34.6587, "lon": 112.4245, "population": 6888500}, + {"name": "Kunming", "lat": 25.0433, "lon": 102.7061, "population": 6850000}, + {"name": "Shangrao", "lat": 28.4419, "lon": 117.9633, "population": 6810700}, + {"name": "Hangzhou", "lat": 30.25, "lon": 120.1675, "population": 6713000}, + {"name": "Bijie", "lat": 27.3019, "lon": 105.2863, "population": 6686100}, + {"name": "Quanzhou", "lat": 24.9139, "lon": 118.5858, "population": 6480000}, + {"name": "Miami", "lat": 25.7839, "lon": -80.2102, "population": 6445545}, + {"name": "Wuxi", "lat": 31.5667, "lon": 120.2833, "population": 6372624}, + {"name": "Huanggang", "lat": 30.45, "lon": 114.875, "population": 6333000}, + {"name": "Maoming", "lat": 21.6618, "lon": 110.9178, "population": 6313200}, + {"name": "Nanchong", "lat": 30.7991, "lon": 106.0784, "population": 6278614}, + {"name": "Zunyi", "lat": 27.705, "lon": 106.9336, "population": 6270700}, + {"name": "Qujing", "lat": 25.5102, "lon": 103.8029, "population": 6155400}, + {"name": "Baghdad", "lat": 33.35, "lon": 44.4167, "population": 6107000}, + {"name": "Xinyang", "lat": 32.1264, "lon": 114.0672, "population": 6109106}, + ] -# Convert to Pandas DataFrame -data = pandas.DataFrame(cities) + # Convert to Pandas DataFrame + data = pandas.DataFrame(cities) -# Add a column holding the bubble size: -# Min(population) -> size = 5 -# Max(population) -> size = 60 -solve = numpy.linalg.solve([[data["population"].min(), 1], [data["population"].max(), 1]], [5, 60]) -data["size"] = data["population"].apply(lambda p: p * solve[0] + solve[1]) + # Add a column holding the bubble size: + # Min(population) -> size = 5 + # Max(population) -> size = 60 + solve = numpy.linalg.solve([[data["population"].min(), 1], [data["population"].max(), 1]], [5, 60]) + data["size"] = data["population"].apply(lambda p: p * solve[0] + solve[1]) -# Add a column holding the bubble hover texts -# Format is " []" -data["text"] = data.apply(lambda row: f"{row['name']} [{row['population']}]", axis=1) + # Add a column holding the bubble hover texts + # Format is " []" + data["text"] = data.apply(lambda row: f"{row['name']} [{row['population']}]", axis=1) -marker = { - # Use the "size" column to set the bubble size - "size": "size" -} + marker = { + # Use the "size" column to set the bubble size + "size": "size" + } -layout = {"geo": {"showland": True, "landcolor": "4A4"}} + layout = {"geo": {"showland": True, "landcolor": "4A4"}} -page = """ + page = """ # Maps - Bubbles <|{data}|chart|type=scattergeo|lat=lat|lon=lon|mode=markers|marker={marker}|text=text|layout={layout}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/map-lines.py b/doc/gui/examples/charts/map-lines.py index d2b5d95e4c..a0166ae6d5 100644 --- a/doc/gui/examples/charts/map-lines.py +++ b/doc/gui/examples/charts/map-lines.py @@ -17,162 +17,163 @@ from taipy.gui import Gui -# Busiest US airports -# Source: https://en.wikipedia.org/wiki/List_of_busiest_airports_by_passenger_traffic -airports: Dict[str, Dict[str, float]] = { - "AMS": {"lat": 52.31047296675518, "lon": 4.76819929439927}, - "ATL": {"lat": 33.64086185344307, "lon": -84.43600501711686}, - "AYT": {"lat": 36.90419539293911, "lon": 30.801855337974292}, - "BOS": {"lat": 42.36556559649881, "lon": -71.00960311751096}, - "CAN": {"lat": 23.38848323741897, "lon": 113.30277713668413}, - "CDG": {"lat": 49.008029034119915, "lon": 2.550879924581871}, - "CJU": {"lat": 33.51035978854847, "lon": 126.4913319405336}, - "CKG": {"lat": 29.71931573810283, "lon": 106.64211731662628}, - "CLT": {"lat": 35.214730980190616, "lon": -80.9474735034797}, - "CSX": {"lat": 28.196638298182446, "lon": 113.22083329905352}, - "CTU": {"lat": 30.567492917634063, "lon": 103.94912193845805}, - "CUN": {"lat": 21.04160313837335, "lon": -86.87407057500725}, - "DEL": {"lat": 28.556426221725868, "lon": 77.10031185913002}, - "DEN": {"lat": 39.85589532386815, "lon": -104.67329901305273}, - "DFW": {"lat": 32.89998507111719, "lon": -97.04044513206443}, - "DME": {"lat": 55.41032513421412, "lon": 37.902386927376234}, - "DTW": {"lat": 42.216145762248594, "lon": -83.35541784824225}, - "DXB": {"lat": 25.253155060720765, "lon": 55.365672799304534}, - "EWR": {"lat": 40.68951508829295, "lon": -74.17446240095387}, - "FLL": {"lat": 26.072469069499288, "lon": -80.1502073285754}, - "FRA": {"lat": 50.037870541116, "lon": 8.562119610188235}, - "GMP": {"lat": 37.558628944763534, "lon": 126.79445244110332}, - "GRU": {"lat": -23.430691200492866, "lon": -46.473107371367846}, - "HGH": {"lat": 30.2359856421667, "lon": 120.43880486944619}, - "HND": {"lat": 35.54938443207139, "lon": 139.77979568388005}, - "IAH": {"lat": 29.98997826322153, "lon": -95.33684707873988}, - "IST": {"lat": 41.27696594578831, "lon": 28.73004303446375}, - "JFK": {"lat": 40.64129497654287, "lon": -73.77813830094803}, - "KMG": {"lat": 24.99723271310971, "lon": 102.74030761670535}, - "LAS": {"lat": 36.08256046166282, "lon": -115.15700045025673}, - "LAX": {"lat": 33.94157995977848, "lon": -118.40848708486908}, - "MAD": {"lat": 40.49832400063489, "lon": -3.5676196584173754}, - "MCO": {"lat": 28.419119921670067, "lon": -81.30451008534465}, - "MEX": {"lat": 19.436096410278736, "lon": -99.07204777544095}, - "MIA": {"lat": 25.795823878101675, "lon": -80.28701871639629}, - "MSP": {"lat": 44.88471735079015, "lon": -93.22233824616785}, - "ORD": {"lat": 41.98024003208415, "lon": -87.9089657513565}, - "PEK": {"lat": 40.079816213451416, "lon": 116.60309064055198}, - "PHX": {"lat": 33.43614430802288, "lon": -112.01128270596944}, - "PKX": {"lat": 39.50978840400886, "lon": 116.41050689906415}, - "PVG": {"lat": 31.144398958515847, "lon": 121.80823008537978}, - "SAW": {"lat": 40.9053709590178, "lon": 29.316838841845318}, - "SEA": {"lat": 47.448024349661814, "lon": -122.30897973141963}, - "SFO": {"lat": 37.62122788155908, "lon": -122.37901977603573}, - "SHA": {"lat": 31.192227319334787, "lon": 121.33425408454256}, - "SLC": {"lat": 40.78985913031307, "lon": -111.97911351851535}, - "SVO": {"lat": 55.97381026156798, "lon": 37.412288430689664}, - "SZX": {"lat": 22.636827890877626, "lon": 113.81454162446936}, - "WUH": {"lat": 30.776589409566686, "lon": 114.21244949898504}, - "XIY": {"lat": 34.437119809208546, "lon": 108.7573508575816}, -} +if __name__ == "__main__": + # Busiest US airports + # Source: https://en.wikipedia.org/wiki/List_of_busiest_airports_by_passenger_traffic + airports: Dict[str, Dict[str, float]] = { + "AMS": {"lat": 52.31047296675518, "lon": 4.76819929439927}, + "ATL": {"lat": 33.64086185344307, "lon": -84.43600501711686}, + "AYT": {"lat": 36.90419539293911, "lon": 30.801855337974292}, + "BOS": {"lat": 42.36556559649881, "lon": -71.00960311751096}, + "CAN": {"lat": 23.38848323741897, "lon": 113.30277713668413}, + "CDG": {"lat": 49.008029034119915, "lon": 2.550879924581871}, + "CJU": {"lat": 33.51035978854847, "lon": 126.4913319405336}, + "CKG": {"lat": 29.71931573810283, "lon": 106.64211731662628}, + "CLT": {"lat": 35.214730980190616, "lon": -80.9474735034797}, + "CSX": {"lat": 28.196638298182446, "lon": 113.22083329905352}, + "CTU": {"lat": 30.567492917634063, "lon": 103.94912193845805}, + "CUN": {"lat": 21.04160313837335, "lon": -86.87407057500725}, + "DEL": {"lat": 28.556426221725868, "lon": 77.10031185913002}, + "DEN": {"lat": 39.85589532386815, "lon": -104.67329901305273}, + "DFW": {"lat": 32.89998507111719, "lon": -97.04044513206443}, + "DME": {"lat": 55.41032513421412, "lon": 37.902386927376234}, + "DTW": {"lat": 42.216145762248594, "lon": -83.35541784824225}, + "DXB": {"lat": 25.253155060720765, "lon": 55.365672799304534}, + "EWR": {"lat": 40.68951508829295, "lon": -74.17446240095387}, + "FLL": {"lat": 26.072469069499288, "lon": -80.1502073285754}, + "FRA": {"lat": 50.037870541116, "lon": 8.562119610188235}, + "GMP": {"lat": 37.558628944763534, "lon": 126.79445244110332}, + "GRU": {"lat": -23.430691200492866, "lon": -46.473107371367846}, + "HGH": {"lat": 30.2359856421667, "lon": 120.43880486944619}, + "HND": {"lat": 35.54938443207139, "lon": 139.77979568388005}, + "IAH": {"lat": 29.98997826322153, "lon": -95.33684707873988}, + "IST": {"lat": 41.27696594578831, "lon": 28.73004303446375}, + "JFK": {"lat": 40.64129497654287, "lon": -73.77813830094803}, + "KMG": {"lat": 24.99723271310971, "lon": 102.74030761670535}, + "LAS": {"lat": 36.08256046166282, "lon": -115.15700045025673}, + "LAX": {"lat": 33.94157995977848, "lon": -118.40848708486908}, + "MAD": {"lat": 40.49832400063489, "lon": -3.5676196584173754}, + "MCO": {"lat": 28.419119921670067, "lon": -81.30451008534465}, + "MEX": {"lat": 19.436096410278736, "lon": -99.07204777544095}, + "MIA": {"lat": 25.795823878101675, "lon": -80.28701871639629}, + "MSP": {"lat": 44.88471735079015, "lon": -93.22233824616785}, + "ORD": {"lat": 41.98024003208415, "lon": -87.9089657513565}, + "PEK": {"lat": 40.079816213451416, "lon": 116.60309064055198}, + "PHX": {"lat": 33.43614430802288, "lon": -112.01128270596944}, + "PKX": {"lat": 39.50978840400886, "lon": 116.41050689906415}, + "PVG": {"lat": 31.144398958515847, "lon": 121.80823008537978}, + "SAW": {"lat": 40.9053709590178, "lon": 29.316838841845318}, + "SEA": {"lat": 47.448024349661814, "lon": -122.30897973141963}, + "SFO": {"lat": 37.62122788155908, "lon": -122.37901977603573}, + "SHA": {"lat": 31.192227319334787, "lon": 121.33425408454256}, + "SLC": {"lat": 40.78985913031307, "lon": -111.97911351851535}, + "SVO": {"lat": 55.97381026156798, "lon": 37.412288430689664}, + "SZX": {"lat": 22.636827890877626, "lon": 113.81454162446936}, + "WUH": {"lat": 30.776589409566686, "lon": 114.21244949898504}, + "XIY": {"lat": 34.437119809208546, "lon": 108.7573508575816}, + } -# Inter US airports flights -# Source: https://www.faa.gov/air_traffic/by_the_numbers -flights: List[Dict[str, Any]] = [ - {"from": "ATL", "to": "DFW", "traffic": 580}, - {"from": "ATL", "to": "MIA", "traffic": 224}, - {"from": "BOS", "to": "LAX", "traffic": 168}, - {"from": "DEN", "to": "DFW", "traffic": 558}, - {"from": "DFW", "to": "BOS", "traffic": 422}, - {"from": "DFW", "to": "CLT", "traffic": 360}, - {"from": "DFW", "to": "JFK", "traffic": 56}, - {"from": "DFW", "to": "LAS", "traffic": 569}, - {"from": "DFW", "to": "SEA", "traffic": 392}, - {"from": "DTW", "to": "DFW", "traffic": 260}, - {"from": "EWR", "to": "DFW", "traffic": 310}, - {"from": "EWR", "to": "ORD", "traffic": 168}, - {"from": "FLL", "to": "DFW", "traffic": 336}, - {"from": "FLL", "to": "ORD", "traffic": 168}, - {"from": "IAH", "to": "DFW", "traffic": 324}, - {"from": "JFK", "to": "FLL", "traffic": 112}, - {"from": "JFK", "to": "LAS", "traffic": 112}, - {"from": "JFK", "to": "LAX", "traffic": 548}, - {"from": "JFK", "to": "ORD", "traffic": 56}, - {"from": "LAS", "to": "MIA", "traffic": 168}, - {"from": "LAX", "to": "DFW", "traffic": 914}, - {"from": "LAX", "to": "EWR", "traffic": 54}, - {"from": "LAX", "to": "LAS", "traffic": 222}, - {"from": "LAX", "to": "MCO", "traffic": 56}, - {"from": "LAX", "to": "MIA", "traffic": 392}, - {"from": "LAX", "to": "SFO", "traffic": 336}, - {"from": "MCO", "to": "DFW", "traffic": 500}, - {"from": "MCO", "to": "JFK", "traffic": 224}, - {"from": "MCO", "to": "ORD", "traffic": 224}, - {"from": "MIA", "to": "BOS", "traffic": 392}, - {"from": "MIA", "to": "DEN", "traffic": 112}, - {"from": "MIA", "to": "DFW", "traffic": 560}, - {"from": "MIA", "to": "DTW", "traffic": 112}, - {"from": "MIA", "to": "EWR", "traffic": 168}, - {"from": "MIA", "to": "IAH", "traffic": 168}, - {"from": "MIA", "to": "JFK", "traffic": 392}, - {"from": "MIA", "to": "MCO", "traffic": 448}, - {"from": "MSP", "to": "DFW", "traffic": 326}, - {"from": "MSP", "to": "MIA", "traffic": 56}, - {"from": "ORD", "to": "BOS", "traffic": 430}, - {"from": "ORD", "to": "DEN", "traffic": 112}, - {"from": "ORD", "to": "DFW", "traffic": 825}, - {"from": "ORD", "to": "LAS", "traffic": 280}, - {"from": "ORD", "to": "LAX", "traffic": 496}, - {"from": "ORD", "to": "MIA", "traffic": 505}, - {"from": "ORD", "to": "MSP", "traffic": 160}, - {"from": "ORD", "to": "PHX", "traffic": 280}, - {"from": "ORD", "to": "SEA", "traffic": 214}, - {"from": "ORD", "to": "SFO", "traffic": 326}, - {"from": "PHX", "to": "DFW", "traffic": 550}, - {"from": "PHX", "to": "MIA", "traffic": 56}, - {"from": "SEA", "to": "JFK", "traffic": 56}, - {"from": "SFO", "to": "DFW", "traffic": 526}, - {"from": "SFO", "to": "JFK", "traffic": 278}, - {"from": "SFO", "to": "MIA", "traffic": 168}, - {"from": "SLC", "to": "DFW", "traffic": 280}, -] + # Inter US airports flights + # Source: https://www.faa.gov/air_traffic/by_the_numbers + flights: List[Dict[str, Any]] = [ + {"from": "ATL", "to": "DFW", "traffic": 580}, + {"from": "ATL", "to": "MIA", "traffic": 224}, + {"from": "BOS", "to": "LAX", "traffic": 168}, + {"from": "DEN", "to": "DFW", "traffic": 558}, + {"from": "DFW", "to": "BOS", "traffic": 422}, + {"from": "DFW", "to": "CLT", "traffic": 360}, + {"from": "DFW", "to": "JFK", "traffic": 56}, + {"from": "DFW", "to": "LAS", "traffic": 569}, + {"from": "DFW", "to": "SEA", "traffic": 392}, + {"from": "DTW", "to": "DFW", "traffic": 260}, + {"from": "EWR", "to": "DFW", "traffic": 310}, + {"from": "EWR", "to": "ORD", "traffic": 168}, + {"from": "FLL", "to": "DFW", "traffic": 336}, + {"from": "FLL", "to": "ORD", "traffic": 168}, + {"from": "IAH", "to": "DFW", "traffic": 324}, + {"from": "JFK", "to": "FLL", "traffic": 112}, + {"from": "JFK", "to": "LAS", "traffic": 112}, + {"from": "JFK", "to": "LAX", "traffic": 548}, + {"from": "JFK", "to": "ORD", "traffic": 56}, + {"from": "LAS", "to": "MIA", "traffic": 168}, + {"from": "LAX", "to": "DFW", "traffic": 914}, + {"from": "LAX", "to": "EWR", "traffic": 54}, + {"from": "LAX", "to": "LAS", "traffic": 222}, + {"from": "LAX", "to": "MCO", "traffic": 56}, + {"from": "LAX", "to": "MIA", "traffic": 392}, + {"from": "LAX", "to": "SFO", "traffic": 336}, + {"from": "MCO", "to": "DFW", "traffic": 500}, + {"from": "MCO", "to": "JFK", "traffic": 224}, + {"from": "MCO", "to": "ORD", "traffic": 224}, + {"from": "MIA", "to": "BOS", "traffic": 392}, + {"from": "MIA", "to": "DEN", "traffic": 112}, + {"from": "MIA", "to": "DFW", "traffic": 560}, + {"from": "MIA", "to": "DTW", "traffic": 112}, + {"from": "MIA", "to": "EWR", "traffic": 168}, + {"from": "MIA", "to": "IAH", "traffic": 168}, + {"from": "MIA", "to": "JFK", "traffic": 392}, + {"from": "MIA", "to": "MCO", "traffic": 448}, + {"from": "MSP", "to": "DFW", "traffic": 326}, + {"from": "MSP", "to": "MIA", "traffic": 56}, + {"from": "ORD", "to": "BOS", "traffic": 430}, + {"from": "ORD", "to": "DEN", "traffic": 112}, + {"from": "ORD", "to": "DFW", "traffic": 825}, + {"from": "ORD", "to": "LAS", "traffic": 280}, + {"from": "ORD", "to": "LAX", "traffic": 496}, + {"from": "ORD", "to": "MIA", "traffic": 505}, + {"from": "ORD", "to": "MSP", "traffic": 160}, + {"from": "ORD", "to": "PHX", "traffic": 280}, + {"from": "ORD", "to": "SEA", "traffic": 214}, + {"from": "ORD", "to": "SFO", "traffic": 326}, + {"from": "PHX", "to": "DFW", "traffic": 550}, + {"from": "PHX", "to": "MIA", "traffic": 56}, + {"from": "SEA", "to": "JFK", "traffic": 56}, + {"from": "SFO", "to": "DFW", "traffic": 526}, + {"from": "SFO", "to": "JFK", "traffic": 278}, + {"from": "SFO", "to": "MIA", "traffic": 168}, + {"from": "SLC", "to": "DFW", "traffic": 280}, + ] -data = [] -max_traffic = 0 -for flight in flights: - airport_from = airports[flight["from"]] - airport_to = airports[flight["to"]] - # Define data source to plot this flight - data.append({"lat": [airport_from["lat"], airport_to["lat"]], "lon": [airport_from["lon"], airport_to["lon"]]}) - # Store the maximum traffic - if flight["traffic"] > max_traffic: - max_traffic = flight["traffic"] + data = [] + max_traffic = 0 + for flight in flights: + airport_from = airports[flight["from"]] + airport_to = airports[flight["to"]] + # Define data source to plot this flight + data.append({"lat": [airport_from["lat"], airport_to["lat"]], "lon": [airport_from["lon"], airport_to["lon"]]}) + # Store the maximum traffic + if flight["traffic"] > max_traffic: + max_traffic = flight["traffic"] -properties = { - # Chart data - "data": data, - # Chart type - "type": "scattergeo", - # Keep lines only - "mode": "lines", - # Flights display as redish lines - "line": {"width": 2, "color": "E22"}, - "layout": { - # Focus on the USA region - "geo": {"scope": "usa"} - }, -} + properties = { + # Chart data + "data": data, + # Chart type + "type": "scattergeo", + # Keep lines only + "mode": "lines", + # Flights display as redish lines + "line": {"width": 2, "color": "E22"}, + "layout": { + # Focus on the USA region + "geo": {"scope": "usa"} + }, + } -# Set the proper data source and opacity for each trace -for i, flight in enumerate(flights): - # lat[trace_index] = "[index_in_data]/lat" - properties[f"lat[{i+1}]"] = f"{i}/lat" - # lon[trace_index] = "[index_in_data]/lon" - properties[f"lon[{i+1}]"] = f"{i}/lon" - # Set flight opacity (max traffic -> max opacity) - # Hide legend for all flights - properties[f"options[{i+1}]"] = {"opacity": flight["traffic"] / max_traffic, "showlegend": False} + # Set the proper data source and opacity for each trace + for i, flight in enumerate(flights): + # lat[trace_index] = "[index_in_data]/lat" + properties[f"lat[{i+1}]"] = f"{i}/lat" + # lon[trace_index] = "[index_in_data]/lon" + properties[f"lon[{i+1}]"] = f"{i}/lon" + # Set flight opacity (max traffic -> max opacity) + # Hide legend for all flights + properties[f"options[{i+1}]"] = {"opacity": flight["traffic"] / max_traffic, "showlegend": False} -page = """ + page = """ # Maps - Multiple Lines <|chart|properties={properties}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/map-simple.py b/doc/gui/examples/charts/map-simple.py index 68815b0509..fd0815d613 100644 --- a/doc/gui/examples/charts/map-simple.py +++ b/doc/gui/examples/charts/map-simple.py @@ -15,39 +15,40 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -# Flight start and end locations -data = { - # Hartsfield-Jackson Atlanta International Airport - # to - # Aéroport de Paris-Charles de Gaulle - "lat": [33.64, 49.01], - "lon": [-84.44, 2.55], -} +if __name__ == "__main__": + # Flight start and end locations + data = { + # Hartsfield-Jackson Atlanta International Airport + # to + # Aéroport de Paris-Charles de Gaulle + "lat": [33.64, 49.01], + "lon": [-84.44, 2.55], + } -layout = { - # Chart title - "title": "ATL to CDG", - # Hide legend - "showlegend": False, - # Focus on relevant area - "geo": { - "resolution": 50, - "showland": True, - "showocean": True, - "landcolor": "4a4", - "oceancolor": "77d", - "lataxis": {"range": [20, 60]}, - "lonaxis": {"range": [-100, 20]}, - }, -} + layout = { + # Chart title + "title": "ATL to CDG", + # Hide legend + "showlegend": False, + # Focus on relevant area + "geo": { + "resolution": 50, + "showland": True, + "showocean": True, + "landcolor": "4a4", + "oceancolor": "77d", + "lataxis": {"range": [20, 60]}, + "lonaxis": {"range": [-100, 20]}, + }, + } -# Flight displayed as a thick, red plot -line = {"width": 5, "color": "red"} + # Flight displayed as a thick, red plot + line = {"width": 5, "color": "red"} -page = """ + page = """ # Maps - Simple <|{data}|chart|type=scattergeo|mode=lines|lat=lat|lon=lon|line={line}|layout={layout}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/pie-multiple.py b/doc/gui/examples/charts/pie-multiple.py index 2a79b2dce7..bd1b66a921 100644 --- a/doc/gui/examples/charts/pie-multiple.py +++ b/doc/gui/examples/charts/pie-multiple.py @@ -15,76 +15,77 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -# List of countries, used as labels in the pie charts -countries = ["US", "China", "European Union", "Russian Federation", "Brazil", "India", "Rest of World"] +if __name__ == "__main__": + # List of countries, used as labels in the pie charts + countries = ["US", "China", "European Union", "Russian Federation", "Brazil", "India", "Rest of World"] -data = [ - { - # Values for GHG Emissions - "values": [16, 15, 12, 6, 5, 4, 42], - "labels": countries, - }, - { - # Values for CO2 Emissions - "values": [27, 11, 25, 8, 1, 3, 25], - "labels": countries, - }, -] - -options = [ - # First pie chart - { - # Show label value on hover - "hoverinfo": "label", - # Leave a hole in the middle of the chart - "hole": 0.4, - # Place the trace on the left side - "domain": {"column": 0}, - }, - # Second pie chart - { - # Show label value on hover - "hoverinfo": "label", - # Leave a hole in the middle of the chart - "hole": 0.4, - # Place the trace on the right side - "domain": {"column": 1}, - }, -] + data = [ + { + # Values for GHG Emissions + "values": [16, 15, 12, 6, 5, 4, 42], + "labels": countries, + }, + { + # Values for CO2 Emissions + "values": [27, 11, 25, 8, 1, 3, 25], + "labels": countries, + }, + ] -layout = { - # Chart title - "title": "Global Emissions 1990-2011", - # Show traces in a 1x2 grid - "grid": {"rows": 1, "columns": 2}, - "annotations": [ - # Annotation for the first trace + options = [ + # First pie chart { - "text": "GHG", - "font": {"size": 20}, - # Hide annotation arrow - "showarrow": False, - # Move to the center of the trace - "x": 0.18, - "y": 0.5, + # Show label value on hover + "hoverinfo": "label", + # Leave a hole in the middle of the chart + "hole": 0.4, + # Place the trace on the left side + "domain": {"column": 0}, }, - # Annotation for the second trace + # Second pie chart { - "text": "CO2", - "font": {"size": 20}, - "showarrow": False, - # Move to the center of the trace - "x": 0.81, - "y": 0.5, + # Show label value on hover + "hoverinfo": "label", + # Leave a hole in the middle of the chart + "hole": 0.4, + # Place the trace on the right side + "domain": {"column": 1}, }, - ], - "showlegend": False, -} + ] + + layout = { + # Chart title + "title": "Global Emissions 1990-2011", + # Show traces in a 1x2 grid + "grid": {"rows": 1, "columns": 2}, + "annotations": [ + # Annotation for the first trace + { + "text": "GHG", + "font": {"size": 20}, + # Hide annotation arrow + "showarrow": False, + # Move to the center of the trace + "x": 0.18, + "y": 0.5, + }, + # Annotation for the second trace + { + "text": "CO2", + "font": {"size": 20}, + "showarrow": False, + # Move to the center of the trace + "x": 0.81, + "y": 0.5, + }, + ], + "showlegend": False, + } -page = """ + page = """ # Pie - Multiple <|{data}|chart|type=pie|x[1]=0/values|x[2]=1/values|options={options}|layout={layout}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/pie-simple.py b/doc/gui/examples/charts/pie-simple.py index 723a7136c8..d3dd2acb0c 100644 --- a/doc/gui/examples/charts/pie-simple.py +++ b/doc/gui/examples/charts/pie-simple.py @@ -15,27 +15,28 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -# Source https://www.fao.org/faostat/en/#data/SDGB -data = { - "Country": [ - "Rest of the world", - "Russian Federation", - "Brazil", - "Canada", - "United States of America", - "China", - "Australia", - "Democratic Republic of the Congo", - "Indonesia", - "Peru", - ], - "Area": [1445674.66, 815312, 496620, 346928, 309795, 219978, 134005, 126155, 92133.2, 72330.4], -} +if __name__ == "__main__": + # Source https://www.fao.org/faostat/en/#data/SDGB + data = { + "Country": [ + "Rest of the world", + "Russian Federation", + "Brazil", + "Canada", + "United States of America", + "China", + "Australia", + "Democratic Republic of the Congo", + "Indonesia", + "Peru", + ], + "Area": [1445674.66, 815312, 496620, 346928, 309795, 219978, 134005, 126155, 92133.2, 72330.4], + } -page = """ + page = """ # Pie - Simple <|{data}|chart|type=pie|values=Area|label=Country|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/pie-styling.py b/doc/gui/examples/charts/pie-styling.py index 1ca1b1c727..540bbfb383 100644 --- a/doc/gui/examples/charts/pie-styling.py +++ b/doc/gui/examples/charts/pie-styling.py @@ -15,30 +15,31 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -n_slices = 20 -# List: [1..n_slices] -# Slices are bigger and bigger -values = list(range(1, n_slices + 1)) +if __name__ == "__main__": + n_slices = 20 + # List: [1..n_slices] + # Slices are bigger and bigger + values = list(range(1, n_slices + 1)) -marker = { - # Colors move around the Hue color disk - "colors": [f"hsl({360 * (i - 1)/(n_slices - 1)},90%,60%)" for i in values] -} + marker = { + # Colors move around the Hue color disk + "colors": [f"hsl({360 * (i - 1)/(n_slices - 1)},90%,60%)" for i in values] + } -layout = { - # Hide the legend - "showlegend": False -} + layout = { + # Hide the legend + "showlegend": False + } -options = { - # Hide the texts - "textinfo": "none" -} + options = { + # Hide the texts + "textinfo": "none" + } -page = """ + page = """ # Pie - Style <|{values}|chart|type=pie|marker={marker}|options={options}|layout={layout}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/polar-angular-axis.py b/doc/gui/examples/charts/polar-angular-axis.py index 42bb2a1420..cf78bb5df8 100644 --- a/doc/gui/examples/charts/polar-angular-axis.py +++ b/doc/gui/examples/charts/polar-angular-axis.py @@ -15,41 +15,42 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -# Create a star shape -data = {"r": [3, 1] * 5 + [3], "theta": list(range(0, 360, 36)) + [0]} +if __name__ == "__main__": + # Create a star shape + data = {"r": [3, 1] * 5 + [3], "theta": list(range(0, 360, 36)) + [0]} -options = [ - # First plot is filled with a yellow-ish color - {"subplot": "polar", "fill": "toself", "fillcolor": "#E4FF87"}, - # Second plot is filled with a blue-ish color - {"fill": "toself", "subplot": "polar2", "fillcolor": "#709BFF"}, -] + options = [ + # First plot is filled with a yellow-ish color + {"subplot": "polar", "fill": "toself", "fillcolor": "#E4FF87"}, + # Second plot is filled with a blue-ish color + {"fill": "toself", "subplot": "polar2", "fillcolor": "#709BFF"}, + ] -layout = { - "polar": { - # This actually is the default value - "angularaxis": { - "direction": "counterclockwise", + layout = { + "polar": { + # This actually is the default value + "angularaxis": { + "direction": "counterclockwise", + }, }, - }, - "polar2": { - "angularaxis": { - # Rotate the axis 180° (0 is on the left) - "rotation": 180, - # Orient the axis clockwise - "direction": "clockwise", - # Show the angles as radians - "thetaunit": "radians", + "polar2": { + "angularaxis": { + # Rotate the axis 180° (0 is on the left) + "rotation": 180, + # Orient the axis clockwise + "direction": "clockwise", + # Show the angles as radians + "thetaunit": "radians", + }, }, - }, - # Hide the legend - "showlegend": False, -} + # Hide the legend + "showlegend": False, + } -page = """ + page = """ # Polar Charts - Direction <|{data}|chart|type=scatterpolar|layout={layout}|options={options}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/polar-area.py b/doc/gui/examples/charts/polar-area.py index 3f5d3c857d..c26dca5fe7 100644 --- a/doc/gui/examples/charts/polar-area.py +++ b/doc/gui/examples/charts/polar-area.py @@ -17,9 +17,6 @@ from taipy.gui import Gui -# One data point for each degree -theta = range(0, 360) - # Parametric equation that draws a shape (source Wolfram Mathworld) def draw_heart(angle): @@ -28,29 +25,33 @@ def draw_heart(angle): return 2 - 2 * sa + sa * (math.sqrt(math.fabs(math.cos(a))) / (sa + 1.4)) -data = { - # Create the heart shape - "r": [draw_heart(angle) for angle in theta], - "theta": theta, -} +if __name__ == "__main__": + # One data point for each degree + theta = range(0, 360) + + data = { + # Create the heart shape + "r": [draw_heart(angle) for angle in theta], + "theta": theta, + } -options = {"fill": "toself"} + options = {"fill": "toself"} -layout = { - # Hide the legend - "showlegend": False, - "polar": { - # Hide the angular axis - "angularaxis": {"visible": False}, - # Hide the radial axis - "radialaxis": {"visible": False}, - }, -} + layout = { + # Hide the legend + "showlegend": False, + "polar": { + # Hide the angular axis + "angularaxis": {"visible": False}, + # Hide the radial axis + "radialaxis": {"visible": False}, + }, + } -page = """ + page = """ # Polar - Area <|{data}|chart|type=scatterpolar|mode=none|layout={layout}|options={options}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/polar-multiple.py b/doc/gui/examples/charts/polar-multiple.py index 86975c4a8d..5e7def4640 100644 --- a/doc/gui/examples/charts/polar-multiple.py +++ b/doc/gui/examples/charts/polar-multiple.py @@ -17,35 +17,36 @@ from taipy.gui import Gui -# One data point for each degree -theta = range(0, 360) - # Create a rose-like shaped radius-array def create_rose(n_petals): return [math.cos(math.radians(n_petals * angle)) for angle in theta] -data = {"theta": theta, "r1": create_rose(2), "r2": create_rose(3), "r3": create_rose(4)} +if __name__ == "__main__": + # One data point for each degree + theta = range(0, 360) + + data = {"theta": theta, "r1": create_rose(2), "r2": create_rose(3), "r3": create_rose(4)} -# We want three traces in the same chart -r = ["r1", "r2", "r3"] + # We want three traces in the same chart + r = ["r1", "r2", "r3"] -layout = { - # Hide the legend - "showlegend": False, - "polar": { - # Hide the angular axis - "angularaxis": {"visible": False}, - # Hide the radial axis - "radialaxis": {"visible": False}, - }, -} + layout = { + # Hide the legend + "showlegend": False, + "polar": { + # Hide the angular axis + "angularaxis": {"visible": False}, + # Hide the radial axis + "radialaxis": {"visible": False}, + }, + } -page = """ + page = """ # Polar - Multiple <|{data}|chart|type=scatterpolar|mode=lines|r={r}|theta=theta|layout={layout}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/polar-sectors.py b/doc/gui/examples/charts/polar-sectors.py index 82c0a7e630..5b27e02703 100644 --- a/doc/gui/examples/charts/polar-sectors.py +++ b/doc/gui/examples/charts/polar-sectors.py @@ -15,35 +15,36 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -# Sample small plot definition -trace = { - "r": [1, 2, 3, 4, 1], - "theta": [0, 40, 80, 120, 160], -} +if __name__ == "__main__": + # Sample small plot definition + trace = { + "r": [1, 2, 3, 4, 1], + "theta": [0, 40, 80, 120, 160], + } -# The same data is used in both traces -data = [trace, trace] + # The same data is used in both traces + data = [trace, trace] -# Naming the subplot is mandatory to get them both in -# the same chart -options = [ - { - "subplot": "polar", - }, - {"subplot": "polar2"}, -] + # Naming the subplot is mandatory to get them both in + # the same chart + options = [ + { + "subplot": "polar", + }, + {"subplot": "polar2"}, + ] -layout = { - # Hide the legend - "showlegend": False, - # Restrict the angular values for second trace - "polar2": {"sector": [30, 130]}, -} + layout = { + # Hide the legend + "showlegend": False, + # Restrict the angular values for second trace + "polar2": {"sector": [30, 130]}, + } -md = """ + md = """ # Polar - Sectors <|{data}|chart|type=scatterpolar|layout={layout}|options={options}|> -""" + """ -Gui(md).run() + Gui(md).run() diff --git a/doc/gui/examples/charts/polar-simple.py b/doc/gui/examples/charts/polar-simple.py index ccd51d661c..cad9118af9 100644 --- a/doc/gui/examples/charts/polar-simple.py +++ b/doc/gui/examples/charts/polar-simple.py @@ -17,9 +17,6 @@ from taipy.gui import Gui -# One data point for each degree -theta = range(0, 360) - # Parametric equation that draws a shape (source Wolfram Mathworld) def draw_heart(angle): @@ -28,16 +25,20 @@ def draw_heart(angle): return 2 - 2 * sa + sa * (math.sqrt(math.fabs(math.cos(a))) / (sa + 1.4)) -data = { - # Create the heart shape - "r": [draw_heart(angle) for angle in theta], - "theta": theta, -} +if __name__ == "__main__": + # One data point for each degree + theta = range(0, 360) + + data = { + # Create the heart shape + "r": [draw_heart(angle) for angle in theta], + "theta": theta, + } -page = """ + page = """ # Polar - Simple <|{data}|chart|type=scatterpolar|mode=lines|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/polar-tick-texts.py b/doc/gui/examples/charts/polar-tick-texts.py index cfcfd3a0c2..e02ecdf5f2 100644 --- a/doc/gui/examples/charts/polar-tick-texts.py +++ b/doc/gui/examples/charts/polar-tick-texts.py @@ -45,67 +45,67 @@ def generate_hand_shapes(): return [hours_hand, minutes_hand, seconds_hand] -# Initialize the data set with the current time -data = generate_hand_shapes() - -layout = { - "polar": { - "angularaxis": { - "rotation": 90, - "direction": "clockwise", - # One tick every 30 degrees - "tickvals": list(numpy.arange(0.0, 360.0, 30)), - # Text value for every tick - "ticktext": ["XII", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI"], - }, - "radialaxis": {"angle": 90, "visible": False, "range": [0, 12]}, - }, - "showlegend": False, -} - -# Options to be used for all three traces -base_opts = {"fill": "toself"} -# Specific for hours -hours_opts = dict(base_opts) -hours_opts["fillcolor"] = "#FF0000" -# Specific for minutes -minutes_opts = dict(base_opts) -minutes_opts["fillcolor"] = "#00FF00" -# Specific for seconds -seconds_opts = dict(base_opts) -seconds_opts["fillcolor"] = "#0000FF" - -# Store all the chart control properties in a single object -properties = { - # Don't show data point markers - "mode": "lines", - # Data for the hours - "theta[1]": "0/a", - "r[1]": "0/r", - # Data for the minutes - "theta[2]": "1/a", - "r[2]": "1/r", - # Data for the seconds - "theta[3]": "2/a", - "r[3]": "2/r", - # Options for the three traces - "options[1]": hours_opts, - "options[2]": minutes_opts, - "options[3]": seconds_opts, - "line": {"color": "black"}, - "layout": layout, -} - - # Update time on every refresh def on_navigate(state, page): state.data = generate_hand_shapes() return page -page = """ +if __name__ == "__main__": + # Initialize the data set with the current time + data = generate_hand_shapes() + + layout = { + "polar": { + "angularaxis": { + "rotation": 90, + "direction": "clockwise", + # One tick every 30 degrees + "tickvals": list(numpy.arange(0.0, 360.0, 30)), + # Text value for every tick + "ticktext": ["XII", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI"], + }, + "radialaxis": {"angle": 90, "visible": False, "range": [0, 12]}, + }, + "showlegend": False, + } + + # Options to be used for all three traces + base_opts = {"fill": "toself"} + # Specific for hours + hours_opts = dict(base_opts) + hours_opts["fillcolor"] = "#FF0000" + # Specific for minutes + minutes_opts = dict(base_opts) + minutes_opts["fillcolor"] = "#00FF00" + # Specific for seconds + seconds_opts = dict(base_opts) + seconds_opts["fillcolor"] = "#0000FF" + + # Store all the chart control properties in a single object + properties = { + # Don't show data point markers + "mode": "lines", + # Data for the hours + "theta[1]": "0/a", + "r[1]": "0/r", + # Data for the minutes + "theta[2]": "1/a", + "r[2]": "1/r", + # Data for the seconds + "theta[3]": "2/a", + "r[3]": "2/r", + # Options for the three traces + "options[1]": hours_opts, + "options[2]": minutes_opts, + "options[3]": seconds_opts, + "line": {"color": "black"}, + "layout": layout, + } + + page = """ # Polar - Tick texts <|{data}|chart|type=scatterpolar|properties={properties}|> -""" -Gui(page).run() + """ + Gui(page).run() diff --git a/doc/gui/examples/charts/radar-multiple.py b/doc/gui/examples/charts/radar-multiple.py index 1b821119e2..ce090946d8 100644 --- a/doc/gui/examples/charts/radar-multiple.py +++ b/doc/gui/examples/charts/radar-multiple.py @@ -17,39 +17,40 @@ from taipy.gui import Gui -# Skill categories -skills = ["HTML", "CSS", "Java", "Python", "PHP", "JavaScript", "Photoshop"] -data: List[Dict[str, List]] = [ - # Proportion of skills used for Backend development - {"Backend": [10, 10, 80, 70, 90, 30, 0], "Skills": skills}, - # Proportion of skills used for Frontend development - {"Frontend": [90, 90, 0, 10, 20, 80, 60], "Skills": skills}, -] - -# Append first elements to all arrays for a nice stroke -skills.append(skills[0]) -data[0]["Backend"].append(data[0]["Backend"][0]) -data[1]["Frontend"].append(data[1]["Frontend"][0]) - -layout = { - # Force the radial axis displayed range - "polar": {"radialaxis": {"range": [0, 100]}} -} - -# Fill the trace -options = {"fill": "toself"} - -# Reflected in the legend -names = ["Backend", "Frontend"] - -# To shorten the chart control definition -r = ["0/Backend", "1/Frontend"] -theta = ["0/Skills", "1/Skills"] - -page = """ +if __name__ == "__main__": + # Skill categories + skills = ["HTML", "CSS", "Java", "Python", "PHP", "JavaScript", "Photoshop"] + data: List[Dict[str, List]] = [ + # Proportion of skills used for Backend development + {"Backend": [10, 10, 80, 70, 90, 30, 0], "Skills": skills}, + # Proportion of skills used for Frontend development + {"Frontend": [90, 90, 0, 10, 20, 80, 60], "Skills": skills}, + ] + + # Append first elements to all arrays for a nice stroke + skills.append(skills[0]) + data[0]["Backend"].append(data[0]["Backend"][0]) + data[1]["Frontend"].append(data[1]["Frontend"][0]) + + layout = { + # Force the radial axis displayed range + "polar": {"radialaxis": {"range": [0, 100]}} + } + + # Fill the trace + options = {"fill": "toself"} + + # Reflected in the legend + names = ["Backend", "Frontend"] + + # To shorten the chart control definition + r = ["0/Backend", "1/Frontend"] + theta = ["0/Skills", "1/Skills"] + + page = """ # Radar - Multiple <|{data}|chart|type=scatterpolar|name={names}|r={r}|theta={theta}|options={options}|layout={layout}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/radar-simple.py b/doc/gui/examples/charts/radar-simple.py index a957719e4f..99d6065fe8 100644 --- a/doc/gui/examples/charts/radar-simple.py +++ b/doc/gui/examples/charts/radar-simple.py @@ -17,40 +17,41 @@ from taipy.gui import Gui -# Source: www.statista.com (Most used programming languages in 2022) -data: Dict[str, List] = { - # List of programming languages - "Language": ["JavaScript", "HTML/CSS", "SQL", "Python", "Typescript", "Java", "Bash/Shell"], - # Percentage of usage, per language - "%": [65.36, 55.08, 49.43, 48.07, 34.83, 33.27, 29.07], -} - -# Close the shape for a nice-looking stroke -# If the first point is *not* appended to the end of the list, -# then the shape does not look as it is closed. -data["%"].append(data["%"][0]) -data["Language"].append(data["Language"][0]) - -layout = { - "polar": { - "radialaxis": { - # Force the radial range to 0-100 - "range": [0, 100], - } - }, - # Hide legend - "showlegend": False, -} - -options = { - # Fill the trace - "fill": "toself" -} - -md = """ +if __name__ == "__main__": + # Source: www.statista.com (Most used programming languages in 2022) + data: Dict[str, List] = { + # List of programming languages + "Language": ["JavaScript", "HTML/CSS", "SQL", "Python", "Typescript", "Java", "Bash/Shell"], + # Percentage of usage, per language + "%": [65.36, 55.08, 49.43, 48.07, 34.83, 33.27, 29.07], + } + + # Close the shape for a nice-looking stroke + # If the first point is *not* appended to the end of the list, + # then the shape does not look as it is closed. + data["%"].append(data["%"][0]) + data["Language"].append(data["Language"][0]) + + layout = { + "polar": { + "radialaxis": { + # Force the radial range to 0-100 + "range": [0, 100], + } + }, + # Hide legend + "showlegend": False, + } + + options = { + # Fill the trace + "fill": "toself" + } + + md = """ # Radar - Simple <|{data}|chart|type=scatterpolar|r=%|theta=Language|options={options}|layout={layout}|> -""" + """ -Gui(md).run() + Gui(md).run() diff --git a/doc/gui/examples/charts/scatter-classification.py b/doc/gui/examples/charts/scatter-classification.py index b06959b1cf..4691b22161 100644 --- a/doc/gui/examples/charts/scatter-classification.py +++ b/doc/gui/examples/charts/scatter-classification.py @@ -20,21 +20,26 @@ from taipy.gui import Gui -# Let scikit-learn generate a random 2-class classification problem -features, label = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=0) +if __name__ == "__main__": + # Let scikit-learn generate a random 2-class classification problem + features, label = make_classification(n_samples=1000, n_features=2, n_informative=2, n_redundant=0) -random_data = pandas.DataFrame({"x": features[:, 0], "y": features[:, 1], "label": label}) + random_data = pandas.DataFrame({"x": features[:, 0], "y": features[:, 1], "label": label}) -data_x = random_data["x"] -class_A = [random_data.loc[i, "y"] if random_data.loc[i, "label"] == 0 else numpy.nan for i in range(len(random_data))] -class_B = [random_data.loc[i, "y"] if random_data.loc[i, "label"] == 1 else numpy.nan for i in range(len(random_data))] + data_x = random_data["x"] + class_A = [ + random_data.loc[i, "y"] if random_data.loc[i, "label"] == 0 else numpy.nan for i in range(len(random_data)) + ] + class_B = [ + random_data.loc[i, "y"] if random_data.loc[i, "label"] == 1 else numpy.nan for i in range(len(random_data)) + ] -data = {"x": random_data["x"], "Class A": class_A, "Class B": class_B} + data = {"x": random_data["x"], "Class A": class_A, "Class B": class_B} -page = """ + page = """ # Scatter - Classification <|{data}|chart|mode=markers|x=x|y[1]=Class A|y[2]=Class B|width=60%|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/scatter-more-styling.py b/doc/gui/examples/charts/scatter-more-styling.py index ee22c2765d..1da988f652 100644 --- a/doc/gui/examples/charts/scatter-more-styling.py +++ b/doc/gui/examples/charts/scatter-more-styling.py @@ -15,62 +15,63 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -data = [ - { - "x": [1, 2, 3, 4], - "y": [10, 11, 12, 13], - }, - { - "x": [1, 2, 3, 4], - "y": [11, 12, 13, 14], - }, - { - "x": [1, 2, 3, 4], - "y": [12, 13, 14, 15], - }, -] +if __name__ == "__main__": + data = [ + { + "x": [1, 2, 3, 4], + "y": [10, 11, 12, 13], + }, + { + "x": [1, 2, 3, 4], + "y": [11, 12, 13, 14], + }, + { + "x": [1, 2, 3, 4], + "y": [12, 13, 14, 15], + }, + ] -options = [ - # First data set is represented by increasingly large - # disks, getting more and more opaque - {"marker": {"color": "red", "size": [12, 22, 32, 42], "opacity": [0.2, 0.5, 0.7, 1]}}, - # Second data set is represented with a different symbol - # for each data point - { - "marker": {"color": "blue", "size": 18, "symbol": ["circle", "square", "diamond", "cross"]}, - }, - # Third data set is represented with green disks surrounded - # by a red circle that becomes thicker and thicker - { - "marker": {"color": "green", "size": 20, "line": {"color": "red", "width": [2, 4, 6, 8]}}, - }, -] + options = [ + # First data set is represented by increasingly large + # disks, getting more and more opaque + {"marker": {"color": "red", "size": [12, 22, 32, 42], "opacity": [0.2, 0.5, 0.7, 1]}}, + # Second data set is represented with a different symbol + # for each data point + { + "marker": {"color": "blue", "size": 18, "symbol": ["circle", "square", "diamond", "cross"]}, + }, + # Third data set is represented with green disks surrounded + # by a red circle that becomes thicker and thicker + { + "marker": {"color": "green", "size": 20, "line": {"color": "red", "width": [2, 4, 6, 8]}}, + }, + ] -markers = [ - # First data set is represented by increasingly large - # disks, getting more and more opaque - {"color": "red", "size": [12, 22, 32, 42], "opacity": [0.2, 0.5, 0.7, 1]}, - # Second data set is represented with a different symbol - # for each data point - {"color": "blue", "size": 18, "symbol": ["circle", "square", "diamond", "cross"]}, - # Third data set is represented with green disks surrounded - # by a red circle that becomes thicker and thicker - {"color": "green", "size": 20, "line": {"color": "red", "width": [2, 4, 6, 8]}}, -] + markers = [ + # First data set is represented by increasingly large + # disks, getting more and more opaque + {"color": "red", "size": [12, 22, 32, 42], "opacity": [0.2, 0.5, 0.7, 1]}, + # Second data set is represented with a different symbol + # for each data point + {"color": "blue", "size": 18, "symbol": ["circle", "square", "diamond", "cross"]}, + # Third data set is represented with green disks surrounded + # by a red circle that becomes thicker and thicker + {"color": "green", "size": 20, "line": {"color": "red", "width": [2, 4, 6, 8]}}, + ] -layout = { - # Hide the chart legend - "showlegend": False, - # Remove all ticks from the x axis - "xaxis": {"showticklabels": False}, - # Remove all ticks from the y axis - "yaxis": {"showticklabels": False}, -} + layout = { + # Hide the chart legend + "showlegend": False, + # Remove all ticks from the x axis + "xaxis": {"showticklabels": False}, + # Remove all ticks from the y axis + "yaxis": {"showticklabels": False}, + } -page = """ + page = """ ## Scatter - Customize markers <|{data}|chart|mode=markers|layout={layout}|marker={markers}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/scatter-regression.py b/doc/gui/examples/charts/scatter-regression.py index bea97a078b..1719463d7a 100644 --- a/doc/gui/examples/charts/scatter-regression.py +++ b/doc/gui/examples/charts/scatter-regression.py @@ -20,22 +20,23 @@ from taipy.gui import Gui -# Let scikit-learn generate a random regression problem -n_samples = 300 -X, y, coef = make_regression(n_samples=n_samples, n_features=1, n_informative=1, n_targets=1, noise=25, coef=True) +if __name__ == "__main__": + # Let scikit-learn generate a random regression problem + n_samples = 300 + X, y, coef = make_regression(n_samples=n_samples, n_features=1, n_informative=1, n_targets=1, noise=25, coef=True) -model = LinearRegression().fit(X, y) + model = LinearRegression().fit(X, y) -x_data = X.flatten() -y_data = y.flatten() -predict = model.predict(X) + x_data = X.flatten() + y_data = y.flatten() + predict = model.predict(X) -data = {"x": x_data, "y": y_data, "Regression": predict} + data = {"x": x_data, "y": y_data, "Regression": predict} -page = """ + page = """ # Scatter - Regression <|{data}|chart|x=x|y[1]=y|mode[1]=markers|y[2]=Regression|mode[2]=line|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/scatter-styling.py b/doc/gui/examples/charts/scatter-styling.py index 7a67a34566..5c0d7575c5 100644 --- a/doc/gui/examples/charts/scatter-styling.py +++ b/doc/gui/examples/charts/scatter-styling.py @@ -20,23 +20,24 @@ from taipy.gui import Gui -# Let scikit-learn generate a random 2-class classification problem -n_samples = 100 -features, label = make_classification(n_samples=n_samples, n_features=2, n_informative=2, n_redundant=0) +if __name__ == "__main__": + # Let scikit-learn generate a random 2-class classification problem + n_samples = 100 + features, label = make_classification(n_samples=n_samples, n_features=2, n_informative=2, n_redundant=0) -random_data = pd.DataFrame({"x": features[:, 0], "y": features[:, 1], "label": label}) + random_data = pd.DataFrame({"x": features[:, 0], "y": features[:, 1], "label": label}) -data_x = random_data["x"] -class_A = [random_data.loc[i, "y"] if random_data.loc[i, "label"] == 0 else np.nan for i in range(n_samples)] -class_B = [random_data.loc[i, "y"] if random_data.loc[i, "label"] == 1 else np.nan for i in range(n_samples)] + data_x = random_data["x"] + class_A = [random_data.loc[i, "y"] if random_data.loc[i, "label"] == 0 else np.nan for i in range(n_samples)] + class_B = [random_data.loc[i, "y"] if random_data.loc[i, "label"] == 1 else np.nan for i in range(n_samples)] -data = {"x": random_data["x"], "Class A": class_A, "Class B": class_B} -marker_A = {"symbol": "circle-open", "size": 16} -marker_B = {"symbol": "triangle-up-dot", "size": 20, "opacity": 0.7} -page = """ + data = {"x": random_data["x"], "Class A": class_A, "Class B": class_B} + marker_A = {"symbol": "circle-open", "size": 16} + marker_B = {"symbol": "triangle-up-dot", "size": 20, "opacity": 0.7} + page = """ # Scatter - Styling <|{data}|chart|mode=markers|x=x|y[1]=Class A|y[2]=Class B|width=60%|marker[1]={marker_A}|marker[2]={marker_B}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/treemap-hierarchical-values.py b/doc/gui/examples/charts/treemap-hierarchical-values.py index 10dad8c42e..6a10876928 100644 --- a/doc/gui/examples/charts/treemap-hierarchical-values.py +++ b/doc/gui/examples/charts/treemap-hierarchical-values.py @@ -15,68 +15,69 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -# Major countries and their surface (in km2), for every continent -# Source: https://en.wikipedia.org/wiki/List_of_countries_and_dependencies_by_area -continents = { - "Africa": [ - {"name": "Algeria", "surface": 2381741}, - {"name": "Dem. Rep. Congo", "surface": 2344858}, - {"name": "Sudan", "surface": 1886068}, - {"name": "Libya", "surface": 1759540}, - {"name": "Chad", "surface": 1284000}, - ], - "Asia": [ - {"name": "Russia-Asia", "surface": 17098246}, - {"name": "China", "surface": 9596961}, - {"name": "India", "surface": 3287263}, - {"name": "Kazakhstan", "surface": 2724900}, - {"name": "Saudi Arabia", "surface": 2149690}, - ], - "Europe": [ - {"name": "Russia-Eur", "surface": 3972400}, - {"name": "Ukraine", "surface": 603628}, - {"name": "France", "surface": 551695}, - {"name": "Spain", "surface": 498980}, - {"name": "Sweden", "surface": 450295}, - ], - "Americas": [ - {"name": "Canada", "surface": 9984670}, - {"name": "U.S.A.", "surface": 9833517}, - {"name": "Brazil", "surface": 8515767}, - {"name": "Argentina", "surface": 2780400}, - {"name": "Mexico", "surface": 1964375}, - ], - "Oceania": [ - {"name": "Australia", "surface": 7692024}, - {"name": "Papua New Guinea", "surface": 462840}, - {"name": "New Zealand", "surface": 270467}, - {"name": "Solomon Islands", "surface": 28896}, - {"name": "Fiji", "surface": 18274}, - ], - "Antarctica": [{"name": "Whole", "surface": 14200000}], -} +if __name__ == "__main__": + # Major countries and their surface (in km2), for every continent + # Source: https://en.wikipedia.org/wiki/List_of_countries_and_dependencies_by_area + continents = { + "Africa": [ + {"name": "Algeria", "surface": 2381741}, + {"name": "Dem. Rep. Congo", "surface": 2344858}, + {"name": "Sudan", "surface": 1886068}, + {"name": "Libya", "surface": 1759540}, + {"name": "Chad", "surface": 1284000}, + ], + "Asia": [ + {"name": "Russia-Asia", "surface": 17098246}, + {"name": "China", "surface": 9596961}, + {"name": "India", "surface": 3287263}, + {"name": "Kazakhstan", "surface": 2724900}, + {"name": "Saudi Arabia", "surface": 2149690}, + ], + "Europe": [ + {"name": "Russia-Eur", "surface": 3972400}, + {"name": "Ukraine", "surface": 603628}, + {"name": "France", "surface": 551695}, + {"name": "Spain", "surface": 498980}, + {"name": "Sweden", "surface": 450295}, + ], + "Americas": [ + {"name": "Canada", "surface": 9984670}, + {"name": "U.S.A.", "surface": 9833517}, + {"name": "Brazil", "surface": 8515767}, + {"name": "Argentina", "surface": 2780400}, + {"name": "Mexico", "surface": 1964375}, + ], + "Oceania": [ + {"name": "Australia", "surface": 7692024}, + {"name": "Papua New Guinea", "surface": 462840}, + {"name": "New Zealand", "surface": 270467}, + {"name": "Solomon Islands", "surface": 28896}, + {"name": "Fiji", "surface": 18274}, + ], + "Antarctica": [{"name": "Whole", "surface": 14200000}], + } -name: list = [] -surface: list = [] -continent: list = [] + name: list = [] + surface: list = [] + continent: list = [] -for continent_name, countries in continents.items(): - # Create continent in root rectangle - name.append(continent_name) - surface.append(0) - continent.append("") - # Create countries in that continent rectangle - for country in countries: - name.append(country["name"]) - surface.append(country["surface"]) - continent.append(continent_name) + for continent_name, countries in continents.items(): + # Create continent in root rectangle + name.append(continent_name) + surface.append(0) + continent.append("") + # Create countries in that continent rectangle + for country in countries: + name.append(country["name"]) + surface.append(country["surface"]) + continent.append(continent_name) -data = {"names": name, "surfaces": surface, "continent": continent} + data = {"names": name, "surfaces": surface, "continent": continent} -page = """ + page = """ # TreeMap - Hierarchical values <|{data}|chart|type=treemap|labels=names|values=surfaces|parents=continent|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/treemap-hierarchical.py b/doc/gui/examples/charts/treemap-hierarchical.py index 5e0dc01140..610c9049ef 100644 --- a/doc/gui/examples/charts/treemap-hierarchical.py +++ b/doc/gui/examples/charts/treemap-hierarchical.py @@ -15,61 +15,62 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -# Partial family tree of the British House of Windsor -# Source: https://en.wikipedia.org/wiki/Family_tree_of_the_British_royal_family -tree = { - "name": [ - "Queen Victoria", - "Princess Victoria", - "Edward VII", - "Alice", - "Alfred", - "Wilhelm II", - "Albert Victor", - "George V", - "Louise", - "Ernest Louis", - "Alfred (2)", - "Marie", - "Victoria Melita", - "Edward VIII", - "George VI", - "Mary", - "Elizabeth II", - "Margaret", - "Charles III", - "Anne", - "Andrew", - ], - "parent": [ - "", - "Queen Victoria", - "Queen Victoria", - "Queen Victoria", - "Queen Victoria", - "Princess Victoria", - "Edward VII", - "Edward VII", - "Edward VII", - "Alice", - "Alfred", - "Alfred", - "Alfred", - "George V", - "George V", - "George V", - "George VI", - "George VI", - "Elizabeth II", - "Elizabeth II", - "Elizabeth II", - ], -} +if __name__ == "__main__": + # Partial family tree of the British House of Windsor + # Source: https://en.wikipedia.org/wiki/Family_tree_of_the_British_royal_family + tree = { + "name": [ + "Queen Victoria", + "Princess Victoria", + "Edward VII", + "Alice", + "Alfred", + "Wilhelm II", + "Albert Victor", + "George V", + "Louise", + "Ernest Louis", + "Alfred (2)", + "Marie", + "Victoria Melita", + "Edward VIII", + "George VI", + "Mary", + "Elizabeth II", + "Margaret", + "Charles III", + "Anne", + "Andrew", + ], + "parent": [ + "", + "Queen Victoria", + "Queen Victoria", + "Queen Victoria", + "Queen Victoria", + "Princess Victoria", + "Edward VII", + "Edward VII", + "Edward VII", + "Alice", + "Alfred", + "Alfred", + "Alfred", + "George V", + "George V", + "George V", + "George VI", + "George VI", + "Elizabeth II", + "Elizabeth II", + "Elizabeth II", + ], + } -page = """ + page = """ # TreeMap - Hierarchical <|{tree}|chart|type=treemap|labels=name|parents=parent|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/treemap-simple.py b/doc/gui/examples/charts/treemap-simple.py index a1df4a22af..72951c453e 100644 --- a/doc/gui/examples/charts/treemap-simple.py +++ b/doc/gui/examples/charts/treemap-simple.py @@ -15,18 +15,19 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -# Data set: the first 10 elements of the Fibonacci sequence -n_numbers = 10 -fibonacci = [0, 1] -for i in range(2, n_numbers): - fibonacci.append(fibonacci[i - 1] + fibonacci[i - 2]) +if __name__ == "__main__": + # Data set: the first 10 elements of the Fibonacci sequence + n_numbers = 10 + fibonacci = [0, 1] + for i in range(2, n_numbers): + fibonacci.append(fibonacci[i - 1] + fibonacci[i - 2]) -data = {"index": list(range(1, n_numbers + 1)), "fibonacci": fibonacci} + data = {"index": list(range(1, n_numbers + 1)), "fibonacci": fibonacci} -page = """ + page = """ # TreeMap - Simple <|{data}|chart|type=treemap|labels=index|values=fibonacci|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/waterfall-period_levels.py b/doc/gui/examples/charts/waterfall-period_levels.py index eb20a18cc6..b822577bfe 100644 --- a/doc/gui/examples/charts/waterfall-period_levels.py +++ b/doc/gui/examples/charts/waterfall-period_levels.py @@ -15,22 +15,23 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -# Data set -data = [ - { - # The quarterly periods are grouped by year - "Period": [["Carry", "Q1", "Q2", "Q3", "Q4", "Current"], ["N-1", "N", "N", "N", "N", "N+1"]] - }, - { - "Cash Flow": [25, -17, 12, 18, -8, None], - "Measure": ["absolute", "relative", "relative", "relative", "relative", "total"], - }, -] +if __name__ == "__main__": + # Data set + data = [ + { + # The quarterly periods are grouped by year + "Period": [["Carry", "Q1", "Q2", "Q3", "Q4", "Current"], ["N-1", "N", "N", "N", "N", "N+1"]] + }, + { + "Cash Flow": [25, -17, 12, 18, -8, None], + "Measure": ["absolute", "relative", "relative", "relative", "relative", "total"], + }, + ] -page = """ + page = """ # Waterfall - Period levels <|{data}|chart|type=waterfall|x=0/Period|y=1/Cash Flow|measure=1/Measure|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/waterfall-simple.py b/doc/gui/examples/charts/waterfall-simple.py index ecf61eefd6..07d4a47842 100644 --- a/doc/gui/examples/charts/waterfall-simple.py +++ b/doc/gui/examples/charts/waterfall-simple.py @@ -15,17 +15,18 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -# Data set -data = { - "Day": ["Mon", "Tue", "Wed", "Thu", "Fri"], - "Values": [10, -5, 20, -10, 30], - "Measure": ["absolute", "relative", "relative", "relative", "relative"], -} +if __name__ == "__main__": + # Data set + data = { + "Day": ["Mon", "Tue", "Wed", "Thu", "Fri"], + "Values": [10, -5, 20, -10, 30], + "Measure": ["absolute", "relative", "relative", "relative", "relative"], + } -page = """ + page = """ # Waterfall - Simple <|{data}|chart|type=waterfall|x=Day|y=Values|measure=Measure|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/charts/waterfall-styling.py b/doc/gui/examples/charts/waterfall-styling.py index 44b939a0fb..2b8b391169 100644 --- a/doc/gui/examples/charts/waterfall-styling.py +++ b/doc/gui/examples/charts/waterfall-styling.py @@ -15,32 +15,33 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -# 9-hole course -n_holes = 9 +if __name__ == "__main__": + # 9-hole course + n_holes = 9 -# Data set -# Each entry holds an array of values. One for each hole, plus one for th -data = { - # ["Hole1", "Hole2", ..., "Hole9"] - "Hole": [f"Hole{h}" for h in range(1, n_holes + 1)] + ["Score"], - # Par for each hole - "Par": [3, 4, 4, 5, 3, 5, 4, 5, 3] + [None], # type: ignore - # Score for each hole - "Score": [4, 4, 5, 4, 4, 5, 4, 5, 4] + [None], # type: ignore - # Represented as relative values except for the last one - "M": n_holes * ["relative"] + ["total"], -} + # Data set + # Each entry holds an array of values. One for each hole, plus one for th + data = { + # ["Hole1", "Hole2", ..., "Hole9"] + "Hole": [f"Hole{h}" for h in range(1, n_holes + 1)] + ["Score"], + # Par for each hole + "Par": [3, 4, 4, 5, 3, 5, 4, 5, 3] + [None], # type: ignore + # Score for each hole + "Score": [4, 4, 5, 4, 4, 5, 4, 5, 4] + [None], # type: ignore + # Represented as relative values except for the last one + "M": n_holes * ["relative"] + ["total"], + } -# Compute difference (Score-Par) -data["Diff"] = [data["Score"][i] - data["Par"][i] for i in range(0, n_holes)] + [None] # type: ignore[index] + # Compute difference (Score-Par) + data["Diff"] = [data["Score"][i] - data["Par"][i] for i in range(0, n_holes)] + [None] # type: ignore[index] -# Show positive values in red, and negative values in green -options = {"decreasing": {"marker": {"color": "green"}}, "increasing": {"marker": {"color": "red"}}} + # Show positive values in red, and negative values in green + options = {"decreasing": {"marker": {"color": "green"}}, "increasing": {"marker": {"color": "red"}}} -page = """ + page = """ # Waterfall - Styling <|{data}|chart|type=waterfall|x=Hole|y=Diff|measure=M|options={options}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/controls/date-min-max.py b/doc/gui/examples/controls/date-min-max.py index afaa47b763..4f53ea65ce 100644 --- a/doc/gui/examples/controls/date-min-max.py +++ b/doc/gui/examples/controls/date-min-max.py @@ -17,12 +17,13 @@ from taipy.gui import Gui -date = datetime.date(2024, 6, 15) -start = datetime.date(2024, 5, 15) -end = datetime.date(2024, 7, 15) +if __name__ == "__main__": + date = datetime.date(2024, 6, 15) + start = datetime.date(2024, 5, 15) + end = datetime.date(2024, 7, 15) -page = """ + page = """ <|{date}|date|min={start}|max={end}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/controls/file_download-dynamic-temp-file.py b/doc/gui/examples/controls/file_download-dynamic-temp-file.py index a677988173..1cd43dd5d7 100644 --- a/doc/gui/examples/controls/file_download-dynamic-temp-file.py +++ b/doc/gui/examples/controls/file_download-dynamic-temp-file.py @@ -19,11 +19,6 @@ from taipy.gui import Gui, download -# Initial precision -precision = 10 -# Stores the path to the temporary file -temp_path = None - def pi(precision: int) -> list[int]: """Compute Pi to the required precision. @@ -66,7 +61,13 @@ def download_pi(state): download(state, content=temp_file.name, name="pi.csv", on_action=clean_up) -page = """ +if __name__ == "__main__": + # Initial precision + precision = 10 + # Stores the path to the temporary file + temp_path = None + + page = """ # File Download - Dynamic content Precision: @@ -74,6 +75,6 @@ def download_pi(state): <|{precision}|slider|min=2|max=10000|> <|{None}|file_download|on_action=download_pi|label=Download Pi digits|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/controls/file_download-dynamic.py b/doc/gui/examples/controls/file_download-dynamic.py index 3b65c56cba..1ed9fda055 100644 --- a/doc/gui/examples/controls/file_download-dynamic.py +++ b/doc/gui/examples/controls/file_download-dynamic.py @@ -18,9 +18,6 @@ from taipy.gui import Gui, download -# Initial precision -precision = 10 - def pi(precision: int) -> list[int]: """Compute Pi to the required precision. @@ -57,7 +54,11 @@ def download_pi(state): download(state, content=bytes(buffer.getvalue(), "UTF-8"), name="pi.csv") -page = """ +if __name__ == "__main__": + # Initial precision + precision = 10 + + page = """ # File Download - Dynamic content Precision: @@ -65,6 +66,6 @@ def download_pi(state): <|{precision}|slider|min=2|max=10000|> <|{None}|file_download|on_action=download_pi|label=Download Pi digits|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/controls/metric-color-map.py b/doc/gui/examples/controls/metric-color-map.py index 2735bbcc05..d3d7f1a9b0 100644 --- a/doc/gui/examples/controls/metric-color-map.py +++ b/doc/gui/examples/controls/metric-color-map.py @@ -15,23 +15,24 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -# Color wavelength -color_wl = 530 -# Color ranges by wavelength -color_map = { - 200: None, - 380: "violet", - 435: "blue", - 500: "cyan", - 520: "green", - 565: "yellow", - 590: "orange", - 625: "red", - 740: None, -} +if __name__ == "__main__": + # Color wavelength + color_wl = 530 + # Color ranges by wavelength + color_map = { + 200: None, + 380: "violet", + 435: "blue", + 500: "cyan", + 520: "green", + 565: "yellow", + 590: "orange", + 625: "red", + 740: None, + } -page = """ + page = """ <|{color_wl}|metric|color_map={color_map}|format=%d nm|min=200|max=800|bar_color=gray|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/controls/metric-formats.py b/doc/gui/examples/controls/metric-formats.py index cbf962cc6b..2de4d23aa7 100644 --- a/doc/gui/examples/controls/metric-formats.py +++ b/doc/gui/examples/controls/metric-formats.py @@ -15,12 +15,12 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -speed = 60 -variation = 15 +if __name__ == "__main__": + speed = 60 + variation = 15 -page = """ + page = """ <|{speed}|metric|format=%d km/h|delta={variation}|delta_format=%d %%|> -""" + """ - -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/controls/metric-hide-value.py b/doc/gui/examples/controls/metric-hide-value.py index 1d3492ba0b..1f28031484 100644 --- a/doc/gui/examples/controls/metric-hide-value.py +++ b/doc/gui/examples/controls/metric-hide-value.py @@ -15,9 +15,9 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -page = """ +if __name__ == "__main__": + page = """ <|90|metric|don't show_value|> -""" + """ - -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/controls/metric-layout.py b/doc/gui/examples/controls/metric-layout.py index 09451a8dd0..2003694205 100644 --- a/doc/gui/examples/controls/metric-layout.py +++ b/doc/gui/examples/controls/metric-layout.py @@ -15,20 +15,21 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -value = 45 -# The layout object reference can be found in Plotly's documentation: -# https://plotly.com/python/reference/layout/ -layout = { - "paper_bgcolor": "lightblue", - "font": { - "size": 30, - "color": "blue", - "family": "Arial", - }, -} +if __name__ == "__main__": + value = 45 + # The layout object reference can be found in Plotly's documentation: + # https://plotly.com/python/reference/layout/ + layout = { + "paper_bgcolor": "lightblue", + "font": { + "size": 30, + "color": "blue", + "family": "Arial", + }, + } -page = """ + page = """ <|{value}|metric|layout={layout}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/controls/metric-range.py b/doc/gui/examples/controls/metric-range.py index 6e862c0b53..3c0acb5226 100644 --- a/doc/gui/examples/controls/metric-range.py +++ b/doc/gui/examples/controls/metric-range.py @@ -15,11 +15,11 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -value = 120 +if __name__ == "__main__": + value = 120 -page = """ + page = """ <|{value}|metric|min=50|max=150|> -""" + """ - -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/controls/metric-simple.py b/doc/gui/examples/controls/metric-simple.py index ed4793a1fb..fda16c1bf3 100644 --- a/doc/gui/examples/controls/metric-simple.py +++ b/doc/gui/examples/controls/metric-simple.py @@ -15,12 +15,13 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -value = 72 -delta = 15 -threshold = 60 +if __name__ == "__main__": + value = 72 + delta = 15 + threshold = 60 -page = """ + page = """ <|{value}|metric|delta={delta}|threshold={threshold}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/controls/metric-type.py b/doc/gui/examples/controls/metric-type.py index a32ee53a95..80370b9d61 100644 --- a/doc/gui/examples/controls/metric-type.py +++ b/doc/gui/examples/controls/metric-type.py @@ -15,12 +15,13 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -value = 72 -delta = 15 -threshold = 60 +if __name__ == "__main__": + value = 72 + delta = 15 + threshold = 60 -page = """ + page = """ <|{value}|metric|threshold={threshold}|type=linear|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/controls/number-min-max.py b/doc/gui/examples/controls/number-min-max.py index 3544319a7a..f5d325d34e 100644 --- a/doc/gui/examples/controls/number-min-max.py +++ b/doc/gui/examples/controls/number-min-max.py @@ -15,10 +15,11 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -value = 50 +if __name__ == "__main__": + value = 50 -page = """ + page = """ <|{value}|number|min=10|max=60|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/controls/number-step.py b/doc/gui/examples/controls/number-step.py index 39a05552ea..653e33721d 100644 --- a/doc/gui/examples/controls/number-step.py +++ b/doc/gui/examples/controls/number-step.py @@ -15,10 +15,11 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -value = 50 +if __name__ == "__main__": + value = 50 -page = """ + page = """ <|{value}|number|step=2|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/controls/slider-date-range.py b/doc/gui/examples/controls/slider-date-range.py index 68bb86df2a..17fb5c2dd8 100644 --- a/doc/gui/examples/controls/slider-date-range.py +++ b/doc/gui/examples/controls/slider-date-range.py @@ -17,24 +17,6 @@ from taipy.gui import Gui -# Create the list of dates (all year 2000) -all_dates = {} -all_dates_str = [] -start_date = date(2000, 1, 1) -end_date = date(2001, 1, 1) -a_date = start_date -while a_date < end_date: - date_str = a_date.strftime("%Y/%m/%d") - all_dates_str.append(date_str) - all_dates[date_str] = a_date - a_date += timedelta(days=1) - -# Initial selection: first and last day -dates = [all_dates_str[1], all_dates_str[-1]] -# These two variables are used in text controls -start_sel = all_dates[dates[0]] -end_sel = all_dates[dates[1]] - def on_change(state, _, var_value): # Update the text controls @@ -42,7 +24,26 @@ def on_change(state, _, var_value): state.end_sel = all_dates[var_value[1]] -page = """ +if __name__ == "__main__": + # Create the list of dates (all year 2000) + all_dates = {} + all_dates_str = [] + start_date = date(2000, 1, 1) + end_date = date(2001, 1, 1) + a_date = start_date + while a_date < end_date: + date_str = a_date.strftime("%Y/%m/%d") + all_dates_str.append(date_str) + all_dates[date_str] = a_date + a_date += timedelta(days=1) + + # Initial selection: first and last day + dates = [all_dates_str[1], all_dates_str[-1]] + # These two variables are used in text controls + start_sel = all_dates[dates[0]] + end_sel = all_dates[dates[1]] + + page = """ # Slider - Date range <|{dates}|slider|lov={all_dates_str}|> @@ -50,6 +51,6 @@ def on_change(state, _, var_value): Start: <|{start_sel}|text|format=d MMM|> End: <|{end_sel}|text|format=d MMM|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/controls/slider-lov.py b/doc/gui/examples/controls/slider-lov.py index ff173ecf50..72f7861792 100644 --- a/doc/gui/examples/controls/slider-lov.py +++ b/doc/gui/examples/controls/slider-lov.py @@ -15,12 +15,13 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -value = "XS" +if __name__ == "__main__": + value = "XS" -page = """ + page = """ # Slider - List of values <|{value}|slider|lov=XXS;XS;S;M;L;XL;XXL|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/controls/slider-multiple.py b/doc/gui/examples/controls/slider-multiple.py index 0047f605d4..760149d4b5 100644 --- a/doc/gui/examples/controls/slider-multiple.py +++ b/doc/gui/examples/controls/slider-multiple.py @@ -15,15 +15,16 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -# Initial values -values = [20, 40, 80] +if __name__ == "__main__": + # Initial values + values = [20, 40, 80] -page = """ + page = """ # Slider - Range <|{values}|slider|> Selection: <|{values}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/controls/slider-orientation.py b/doc/gui/examples/controls/slider-orientation.py index 374f671a99..6bf0cf4a40 100644 --- a/doc/gui/examples/controls/slider-orientation.py +++ b/doc/gui/examples/controls/slider-orientation.py @@ -15,14 +15,15 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -value = 40 +if __name__ == "__main__": + value = 40 -page = """ + page = """ # Slider - Vertical <|{value}|slider|orientation=v|> Value: <|{value}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/controls/slider-range.py b/doc/gui/examples/controls/slider-range.py index d96d19a961..525b93347c 100644 --- a/doc/gui/examples/controls/slider-range.py +++ b/doc/gui/examples/controls/slider-range.py @@ -15,14 +15,15 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -value = 9 +if __name__ == "__main__": + value = 9 -page = """ + page = """ # Slider - Custom range <|{value}|slider|min=1|max=10|> Value: <|{value}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/examples/controls/slider-simple.py b/doc/gui/examples/controls/slider-simple.py index dca20a466c..a1176c9ee9 100644 --- a/doc/gui/examples/controls/slider-simple.py +++ b/doc/gui/examples/controls/slider-simple.py @@ -15,14 +15,15 @@ # ----------------------------------------------------------------------------------------- from taipy.gui import Gui -value = 50 +if __name__ == "__main__": + value = 50 -page = """ + page = """ # Slider - Simple <|{value}|slider|> Value: <|{value}|> -""" + """ -Gui(page).run() + Gui(page).run() diff --git a/doc/gui/extension/main.py b/doc/gui/extension/main.py index 9dd05bc407..dca97ede58 100644 --- a/doc/gui/extension/main.py +++ b/doc/gui/extension/main.py @@ -16,10 +16,22 @@ from taipy.gui import Gui -# Initial value -label = "Here is some text" -page = """ +def on_action(state, id): + if id == "addChar": + # Add a random character to the end of 'label' + state.label += random.choice(string.ascii_letters) + elif id == "removeChar": + # Remove the first character of 'label' + if len(state.label) > 0: + state.label = state.label[1:] + + +if __name__ == "__main__": + # Initial value + label = "Here is some text" + + page = """ # Custom elements example ## Fraction: @@ -36,17 +48,6 @@ <|Add a character|button|id=addChar|> <|Remove a character|button|id=removeChar|> -""" - - -def on_action(state, id): - if id == "addChar": - # Add a random character to the end of 'label' - state.label += random.choice(string.ascii_letters) - elif id == "removeChar": - # Remove the first character of 'label' - if len(state.label) > 0: - state.label = state.label[1:] - + """ -Gui(page, libraries=[ExampleLibrary()]).run(debug=True) + Gui(page, libraries=[ExampleLibrary()]).run(debug=True) diff --git a/taipy/core/data/data_node.py b/taipy/core/data/data_node.py index 00e7a4b8b2..5a771069c9 100644 --- a/taipy/core/data/data_node.py +++ b/taipy/core/data/data_node.py @@ -84,20 +84,21 @@ class DataNode(_Entity, _Labeled): import taipy as tp from taipy import Config - # Configure a global data node - dataset_cfg = Config.configure_data_node("my_dataset", scope=tp.Scope.GLOBAL) + if __name__ == "__main__": + # Configure a global data node + dataset_cfg = Config.configure_data_node("my_dataset", scope=tp.Scope.GLOBAL) - # Instantiate a global data node - dataset = tp.create_global_data_node(dataset_cfg) + # Instantiate a global data node + dataset = tp.create_global_data_node(dataset_cfg) - # Retrieve the list of all data nodes - all_data_nodes = tp.get_data_nodes() + # Retrieve the list of all data nodes + all_data_nodes = tp.get_data_nodes() - # Write the data - dataset.write("Hello, World!") + # Write the data + dataset.write("Hello, World!") - # Read the data - print(dataset.read()) + # Read the data + print(dataset.read()) ``` Attributes: diff --git a/taipy/core/notification/core_event_consumer.py b/taipy/core/notification/core_event_consumer.py index 7417bfbdd4..454ef113cf 100644 --- a/taipy/core/notification/core_event_consumer.py +++ b/taipy/core/notification/core_event_consumer.py @@ -34,17 +34,18 @@ def process_event(self, event: Event): print(f"Received event created at : {event.creation_date}") pass - registration_id, registered_queue = Notifier.register( - entity_type=EventEntityType.SCENARIO, - operation=EventOperation.CREATION - ) - - consumer = MyEventConsumer(registration_id, registered_queue) - consumer.start() - # ... - consumer.stop() - - Notifier.unregister(registration_id) + if __name__ == "__main__": + registration_id, registered_queue = Notifier.register( + entity_type=EventEntityType.SCENARIO, + operation=EventOperation.CREATION + ) + + consumer = MyEventConsumer(registration_id, registered_queue) + consumer.start() + # ... + consumer.stop() + + Notifier.unregister(registration_id) ``` Firstly, we would create a consumer class extending from CoreEventConsumerBase diff --git a/taipy/core/scenario/scenario.py b/taipy/core/scenario/scenario.py index 511a9e9ea5..6ce2e6ecb5 100644 --- a/taipy/core/scenario/scenario.py +++ b/taipy/core/scenario/scenario.py @@ -72,24 +72,25 @@ class Scenario(_Entity, Submittable, _Labeled): def by_two(x: int): return x * 2 - # Configure scenarios - input_cfg = Config.configure_data_node("my_input") - result_cfg = Config.configure_data_node("my_result") - task_cfg = Config.configure_task("my_double", function=by_two, input=input_cfg, output=result_cfg) - scenario_cfg = Config.configure_scenario("my_scenario", task_configs=[task_cfg]) + if __name__ == "__main__": + # Configure scenarios + input_cfg = Config.configure_data_node("my_input") + result_cfg = Config.configure_data_node("my_result") + task_cfg = Config.configure_task("my_double", function=by_two, input=input_cfg, output=result_cfg) + scenario_cfg = Config.configure_scenario("my_scenario", task_configs=[task_cfg]) - # Create a new scenario from the configuration - scenario = tp.create_scenario(scenario_cfg) + # Create a new scenario from the configuration + scenario = tp.create_scenario(scenario_cfg) - # Write the input data and submit the scenario - scenario.my_input.write(3) - scenario.submit() + # Write the input data and submit the scenario + scenario.my_input.write(3) + scenario.submit() - # Read the result - print(scenario.my_result.read()) # Output: 6 + # Read the result + print(scenario.my_result.read()) # Output: 6 - # Retrieve all scenarios - all_scenarios = tp.get_scenarios() + # Retrieve all scenarios + all_scenarios = tp.get_scenarios() ``` Attributes: diff --git a/taipy/core/sequence/sequence.py b/taipy/core/sequence/sequence.py index 698953b3c1..c7785cb89a 100644 --- a/taipy/core/sequence/sequence.py +++ b/taipy/core/sequence/sequence.py @@ -79,34 +79,36 @@ def predict(model, month): def planning(forecast, capacity): ... - # Configure data nodes - sales_history_cfg = Config.configure_csv_data_node("sales_history") - trained_model_cfg = Config.configure_data_node("trained_model") - current_month_cfg = Config.configure_data_node("current_month") - forecasts_cfg = Config.configure_data_node("sales_predictions") - capacity_cfg = Config.configure_data_node("capacity") - production_orders_cfg = Config.configure_sql_data_node("production_orders") - - # Configure tasks and scenarios - train_cfg = Config.configure_task("train", function=training, input=sales_history_cfg, output=trained_model_cfg) - predict_cfg = Config.configure_task("predict", function=predict, - input=[trained_model_cfg, current_month_cfg], - output=forecasts_cfg) - plan_cfg = Config.configure_task("planning", function=planning, - input=[forecasts_cfg, capacity_cfg], - output=production_orders_cfg) - scenario_cfg = Config.configure_scenario("scenario", task_configs=[train_cfg, predict_cfg, plan_cfg]) - - # Create a new scenario and sequences - scenario = tp.create_scenario(scenario_cfg) - scenario.add_sequence("sales_sequence", [train_cfg, predict_cfg]) - scenario.add_sequence("production_sequence", [plan_cfg]) - - # Get all sequences - all_sequences = tp.get_sequences() - - # Submit one sequence only - tp.submit(scenario.sales_sequence) + if __name__ == "__main__": + # Configure data nodes + sales_history_cfg = Config.configure_csv_data_node("sales_history") + trained_model_cfg = Config.configure_data_node("trained_model") + current_month_cfg = Config.configure_data_node("current_month") + forecasts_cfg = Config.configure_data_node("sales_predictions") + capacity_cfg = Config.configure_data_node("capacity") + production_orders_cfg = Config.configure_sql_data_node("production_orders") + + # Configure tasks and scenarios + train_cfg = Config.configure_task("train", function=training, + input=sales_history_cfg, output=trained_model_cfg) + predict_cfg = Config.configure_task("predict", function=predict, + input=[trained_model_cfg, current_month_cfg], + output=forecasts_cfg) + plan_cfg = Config.configure_task("planning", function=planning, + input=[forecasts_cfg, capacity_cfg], + output=production_orders_cfg) + scenario_cfg = Config.configure_scenario("scenario", task_configs=[train_cfg, predict_cfg, plan_cfg]) + + # Create a new scenario and sequences + scenario = tp.create_scenario(scenario_cfg) + scenario.add_sequence("sales_sequence", [train_cfg, predict_cfg]) + scenario.add_sequence("production_sequence", [plan_cfg]) + + # Get all sequences + all_sequences = tp.get_sequences() + + # Submit one sequence only + tp.submit(scenario.sales_sequence) ``` Note that the sequences are not necessarily disjoint and may share some tasks. diff --git a/taipy/core/submission/submission.py b/taipy/core/submission/submission.py index e317e60ffd..9ee0daff49 100644 --- a/taipy/core/submission/submission.py +++ b/taipy/core/submission/submission.py @@ -55,23 +55,24 @@ class Submission(_Entity, _Labeled): def by_two(x: int): return x * 2 - # Configure scenarios - input_cfg = Config.configure_data_node("my_input") - result_cfg = Config.configure_data_node("my_result") - task_cfg = Config.configure_task("my_double", function=by_two, input=input_cfg, output=result_cfg) - scenario_cfg = Config.configure_scenario("my_scenario", task_configs=[task_cfg]) - - # Create a new scenario from the configuration - scenario = tp.create_scenario(scenario_cfg) - - # Write the input data and submit the scenario - scenario.my_input.write(3) - submission = scenario.submit() - - # Retrieve the list of jobs, the submission status, and the creation date - jobs = submission.jobs - status = submission.submission_status - creation_date = submission.creation_date + if __name__ == "__main__": + # Configure scenarios + input_cfg = Config.configure_data_node("my_input") + result_cfg = Config.configure_data_node("my_result") + task_cfg = Config.configure_task("my_double", function=by_two, input=input_cfg, output=result_cfg) + scenario_cfg = Config.configure_scenario("my_scenario", task_configs=[task_cfg]) + + # Create a new scenario from the configuration + scenario = tp.create_scenario(scenario_cfg) + + # Write the input data and submit the scenario + scenario.my_input.write(3) + submission = scenario.submit() + + # Retrieve the list of jobs, the submission status, and the creation date + jobs = submission.jobs + status = submission.submission_status + creation_date = submission.creation_date ``` """ diff --git a/taipy/core/task/task.py b/taipy/core/task/task.py index 867c2dc461..f69394b1ed 100644 --- a/taipy/core/task/task.py +++ b/taipy/core/task/task.py @@ -51,29 +51,30 @@ class Task(_Entity, _Labeled): def by_two(x: int): return x * 2 - # Configure data nodes, tasks and scenarios - input_cfg = Config.configure_data_node("my_input", default_data=2) - result_cfg = Config.configure_data_node("my_result") - task_cfg = Config.configure_task("my_double", function=by_two, input=input_cfg, output=result_cfg) - scenario_cfg = Config.configure_scenario("my_scenario", task_configs=[task_cfg]) - - # Instantiate a task along with a scenario - sc = tp.create_scenario(scenario_cfg) - - # Retrieve task and data nodes from scenario - task_input = sc.my_input - double_task = sc.my_double - task_result = sc.my_result - - # Write the input data and submit the task - task_input.write(3) - double_task.submit() - - # Read the result - print(task_result.read()) # Output: 6 - - # Retrieve the list of all tasks - all_tasks = tp.get_tasks() + if __name__ == "__main__": + # Configure data nodes, tasks and scenarios + input_cfg = Config.configure_data_node("my_input", default_data=2) + result_cfg = Config.configure_data_node("my_result") + task_cfg = Config.configure_task("my_double", function=by_two, input=input_cfg, output=result_cfg) + scenario_cfg = Config.configure_scenario("my_scenario", task_configs=[task_cfg]) + + # Instantiate a task along with a scenario + sc = tp.create_scenario(scenario_cfg) + + # Retrieve task and data nodes from scenario + task_input = sc.my_input + double_task = sc.my_double + task_result = sc.my_result + + # Write the input data and submit the task + task_input.write(3) + double_task.submit() + + # Read the result + print(task_result.read()) # Output: 6 + + # Retrieve the list of all tasks + all_tasks = tp.get_tasks() ``` Attributes: diff --git a/taipy/gui/__init__.py b/taipy/gui/__init__.py index b8574e7acc..dbb2843037 100644 --- a/taipy/gui/__init__.py +++ b/taipy/gui/__init__.py @@ -26,7 +26,9 @@ Copy these two lines into a file called *taipy_app.py*. ```py title="taipy_app.py" from taipy import Gui - Gui("# Hello Taipy!").run() + + if __name__ == "__main__": + Gui("# Hello Taipy!").run() ``` - Install Taipy: ``` diff --git a/taipy/gui/builder/page.py b/taipy/gui/builder/page.py index e6b54c3405..d36f47bf10 100644 --- a/taipy/gui/builder/page.py +++ b/taipy/gui/builder/page.py @@ -24,17 +24,18 @@ class Page(_Renderer): This class is typically be used as a Python Context Manager to add the elements.
Here is how you can create a single-page application, creating the elements with code: - ```py + ```python from taipy.gui import Gui from taipy.gui.builder import Page, button def do_something(state): pass - with Page() as page: - button(label="Press me", on_action=do_something) + if __name__ == "__main__": + with Page() as page: + button(label="Press me", on_action=do_something) - Gui(page).run() + Gui(page).run() ``` """ diff --git a/taipy/rest/api/resources/cycle.py b/taipy/rest/api/resources/cycle.py index 16d060b0b8..d045bd5e56 100644 --- a/taipy/rest/api/resources/cycle.py +++ b/taipy/rest/api/resources/cycle.py @@ -76,9 +76,9 @@ class CycleResource(Resource): This Python example requires the 'requests' package to be installed (`pip install requests`). ```python import requests - response = requests.get("http://localhost:5000/api/v1/cycles/CYCLE_223894_e019-b50b-4b9f-ac09-527a") - print(response) - print(response.json()) + response = requests.get("http://localhost:5000/api/v1/cycles/CYCLE_223894_e019-b50b-4b9f-ac09-527a") + print(response) + print(response.json()) ``` `CYCLE_223894_e0fab919-b50b-4b9f-ac09-52f77474fa7a` is the value of the *cycle_id* parameter. It represents the identifier of the Cycle we want to retrieve. @@ -258,9 +258,9 @@ class CycleList(Resource): This Python example requires the 'requests' package to be installed (`pip install requests`). ```python import requests - response = requests.get("http://localhost:5000/api/v1/cycles") - print(response) - print(response.json()) + response = requests.get("http://localhost:5000/api/v1/cycles") + print(response) + print(response.json()) ``` In case of success here is an output example: @@ -333,16 +333,16 @@ class CycleList(Resource): This Python example requires the 'requests' package to be installed (`pip install requests`). ```python import requests - cycle_schema = { - "frequency": "DAILY", - "properties": {}, - "creation_date": "2020-01-01T00:00:00", - "start_date": "2020-01-01T00:00:00", - "end_date": "2020-01-01T00:00:00" - } - response = requests.post("http://localhost:5000/api/v1/cycles", json=cycle_schema) - print(response) - print(response.json()) + cycle_schema = { + "frequency": "DAILY", + "properties": {}, + "creation_date": "2020-01-01T00:00:00", + "start_date": "2020-01-01T00:00:00", + "end_date": "2020-01-01T00:00:00" + } + response = requests.post("http://localhost:5000/api/v1/cycles", json=cycle_schema) + print(response) + print(response.json()) ``` A `CycleSchema^` is provided as a dictionary to specify the various attributes of the `Cycle^` to create. diff --git a/taipy/rest/api/resources/datanode.py b/taipy/rest/api/resources/datanode.py index 6a78d2ebbf..24e34e5cee 100644 --- a/taipy/rest/api/resources/datanode.py +++ b/taipy/rest/api/resources/datanode.py @@ -116,10 +116,11 @@ class DataNodeResource(Resource): This Python example requires the 'requests' package to be installed (`pip install requests`). ```python import requests - response = requests.get( - "http://localhost:5000/api/v1/datanodes/DATANODE_historical_data_set_9db1b542-2e45-44e7-8a85-03ef9ead173d") - print(response) - print(response.json()) + response = requests.get( + "http://localhost:5000/api/v1/datanodes/DATANODE_historical_data_set_9db1b542-2e45-44e7-8a85-03ef9ead173d" + ) + print(response) + print(response.json()) ``` `DATANODE_hist_cfg_75750ed8-4e09-4e00-958d-e352ee426cc9` is the value of the *datanode_id* parameter. It represents the identifier of the data node we want to retrieve. @@ -210,10 +211,11 @@ class DataNodeResource(Resource): This Python example requires the 'requests' package to be installed (`pip install requests`). ```python import requests - response = requests.delete( - "http://localhost:5000/api/v1/datanodes/DATANODE_historical_data_set_9db1b542-2e45-44e7-8a85-03ef9ead173d") - print(response) - print(response.json()) + response = requests.delete( + "http://localhost:5000/api/v1/datanodes/DATANODE_historical_data_set_9db1b542-2e45-44e7-8a85-03ef9ead173d" + ) + print(response) + print(response.json()) ``` `DATANODE_historical_data_set_9db1b542-2e45-44e7-8a85-03ef9ead173d` is the value of the *datanode_id* parameter. It represents the identifier of the Cycle we want to delete. @@ -324,9 +326,9 @@ class DataNodeList(Resource): This Python example requires the 'requests' package to be installed (`pip install requests`). ```python import requests - response = requests.get("http://localhost:5000/api/v1/datanodes") - print(response) - print(response.json()) + response = requests.get("http://localhost:5000/api/v1/datanodes") + print(response) + print(response.json()) ``` In case of success here is an output example: @@ -411,9 +413,9 @@ class DataNodeList(Resource): This Python example requires the 'requests' package to be installed (`pip install requests`). ```python import requests - response = requests.post("http://localhost:5000/api/v1/datanodes?config_id=historical_data_set") - print(response) - print(response.json()) + response = requests.post("http://localhost:5000/api/v1/datanodes?config_id=historical_data_set") + print(response) + print(response.json()) ``` In this example the *config_id* value ("historical_data_set") is given as parameter directly in the url. A corresponding `DataNodeConfig^` must exist and must have been configured before. @@ -527,10 +529,10 @@ class DataNodeReader(Resource): This Python example requires the 'requests' package to be installed (`pip install requests`). ```python import requests - response = requests.get( - "http://localhost:5000/api/v1/datanodes/DATANODE_historical_data_set_9db1b542-2e45-44e7-8a85-03ef9ead173d/read") - print(response) - print(response.json()) + response = requests.get( + "http://localhost:5000/api/v1/datanodes/DATANODE_historical_data_set_9db1b542-2e45-44e7-8a85-03ef9ead173d/read") + print(response) + print(response.json()) ``` `DATANODE_historical_data_set_9db1b542-2e45-44e7-8a85-03ef9ead173d` is the *datanode_id* parameter. It represents the identifier of the data node to read. diff --git a/taipy/rest/api/resources/scenario.py b/taipy/rest/api/resources/scenario.py index 1def7f9a07..87a375e4da 100644 --- a/taipy/rest/api/resources/scenario.py +++ b/taipy/rest/api/resources/scenario.py @@ -81,10 +81,11 @@ class ScenarioResource(Resource): This Python example requires the 'requests' package to be installed (`pip install requests`). ```python import requests - response = requests.get( - "http://localhost:5000/api/v1/scenarios/SCENARIO_63cb358d-5834-4d73-84e4-a6343df5e08c") - print(response) - print(response.json()) + response = requests.get( + "http://localhost:5000/api/v1/scenarios/SCENARIO_63cb358d-5834-4d73-84e4-a6343df5e08c" + ) + print(response) + print(response.json()) ``` `SCENARIO_63cb358d-5834-4d73-84e4-a6343df5e08c` is the value of the *scenario_id* parameter. It represents the identifier of the Cycle we want to retrieve. @@ -166,10 +167,11 @@ class ScenarioResource(Resource): This Python example requires the 'requests' package to be installed (`pip install requests`). ```python import requests - response = requests.delete( - "http://localhost:5000/api/v1/scenarios/SCENARIO_63cb358d-5834-4d73-84e4-a6343df5e08c") - print(response) - print(response.json()) + response = requests.delete( + "http://localhost:5000/api/v1/scenarios/SCENARIO_63cb358d-5834-4d73-84e4-a6343df5e08c" + ) + print(response) + print(response.json()) ``` `SCENARIO_63cb358d-5834-4d73-84e4-a6343df5e08c` is the value of the *scenario_id* parameter. It represents the identifier of the Scenario we want to delete. @@ -275,9 +277,9 @@ class ScenarioList(Resource): This Python example requires the 'requests' package to be installed (`pip install requests`). ```python import requests - response = requests.get("http://localhost:5000/api/v1/scenarios") - print(response) - print(response.json()) + response = requests.get("http://localhost:5000/api/v1/scenarios") + print(response) + print(response.json()) ``` In case of success here is an output example: @@ -361,9 +363,9 @@ class ScenarioList(Resource): This Python example requires the 'requests' package to be installed (`pip install requests`). ```python import requests - response = requests.post("http://localhost:5000/api/v1/scenarios?config_id=my_scenario_config") - print(response) - print(response.json()) + response = requests.post("http://localhost:5000/api/v1/scenarios?config_id=my_scenario_config") + print(response) + print(response.json()) ``` In this example the *config_id* value ("my_scenario_config") is given as parameter directly in the url. A corresponding `ScenarioConfig^` must exist and must have been configured before. @@ -476,11 +478,12 @@ class ScenarioExecutor(Resource): === "Python" This Python example requires the 'requests' package to be installed (`pip install requests`). ```python - import requests - response = requests.post( - "http://localhost:5000/api/v1/scenarios/submit/SCENARIO_63cb358d-5834-4d73-84e4-a6343df5e08c") - print(response) - print(response.json()) + import requests + response = requests.post( + "http://localhost:5000/api/v1/scenarios/submit/SCENARIO_63cb358d-5834-4d73-84e4-a6343df5e08c" + ) + print(response) + print(response.json()) ``` `SCENARIO_63cb358d-5834-4d73-84e4-a6343df5e08c` is the value of the *scenario_id* parameter. It represents the identifier of the Scenario we want to submit.