import datetime  import inspect  import random  import typing as t    from taipy.gui import Gui      def test_chart_md_1(gui: Gui, helpers, csvdata):      selected_indices = [14258]  # noqa: F841      subplot_layout = {  # noqa: F841          "grid": {"rows": 1, "columns": 2, "subplots": [["xy", "x2y"]], "roworder": "bottom to top"}      }      md_string = "<|{csvdata}|chart|x=Day|selected_color=green|y[1]=Daily hospital occupancy|label[1]=Entity|y[2]=Daily hospital occupancy|label[2]=Code|mode[2]=markers|color[2]=red|type[2]=scatter|xaxis[2]=x2|layout={subplot_layout}|on_range_change=range_change|width=100%|height=100%|selected={selected_indices}|>"      expected_list = [          "<Chart",          "selected0={tpec_TpExPr_selected_indices_TPMDL_0}",          "selected1={tpec_TpExPr_selected_indices_TPMDL_0}",          'height="100%"',          'defaultLayout="{"grid": {"rows": 1, "columns": 2, "subplots": [["xy", "x2y"]], "roworder": "bottom to top"}}"',          'onRangeChange="range_change"',          'updateVars="layout=_TpDi_tpec_TpExPr_subplot_layout_TPMDL_0;selected0=tpec_TpExPr_selected_indices_TPMDL_0;selected1=tpec_TpExPr_selected_indices_TPMDL_0"',          'updateVarName="_TpD_tpec_TpExPr_csvdata_TPMDL_0"',          "data={_TpD_tpec_TpExPr_csvdata_TPMDL_0}",          'width="100%"',      ]      gui._set_frame(inspect.currentframe())      helpers.test_control_md(gui, md_string, expected_list)      def test_chart_html_1(gui: Gui, helpers, csvdata):      selected_indices = [14258]  # noqa: F841      subplot_layout = {  # noqa: F841          "grid": {"rows": 1, "columns": 2, "subplots": [["xy", "x2y"]], "roworder": "bottom to top"}      }      html_string = '<taipy:chart data="{csvdata}" x="Day" selected_color="green" y[1]="Daily hospital occupancy" label[1]="Entity" y[2]="Daily hospital occupancy" label[2]="Code" mode[2]="markers" color[2]="red" type[2]="scatter" xaxis[2]="x2" layout="{subplot_layout}" on_range_change="range_change" width="100%" height="100%" selected="{selected_indices}"  />'      expected_list = [          "<Chart",          "selected0={tpec_TpExPr_selected_indices_TPMDL_0}",          "selected1={tpec_TpExPr_selected_indices_TPMDL_0}",          'height="100%"',          'defaultLayout="{"grid": {"rows": 1, "columns": 2, "subplots": [["xy", "x2y"]], "roworder": "bottom to top"}}"',          'onRangeChange="range_change"',          'updateVars="layout=_TpDi_tpec_TpExPr_subplot_layout_TPMDL_0;selected0=tpec_TpExPr_selected_indices_TPMDL_0;selected1=tpec_TpExPr_selected_indices_TPMDL_0"',          'updateVarName="_TpD_tpec_TpExPr_csvdata_TPMDL_0"',          "data={_TpD_tpec_TpExPr_csvdata_TPMDL_0}",          'width="100%"',      ]      gui._set_frame(inspect.currentframe())      helpers.test_control_html(gui, html_string, expected_list)      def test_chart_html_2(gui: Gui, helpers, csvdata):      selected_indices = [14258]  # noqa: F841      subplot_layout = {  # noqa: F841          "grid": {"rows": 1, "columns": 2, "subplots": [["xy", "x2y"]], "roworder": "bottom to top"}      }      html_string = '<taipy:chart x="Day" selected_color="green" y[1]="Daily hospital occupancy" label[1]="Entity" y[2]="Daily hospital occupancy" label[2]="Code" mode[2]="markers" color[2]="red" type[2]="scatter" xaxis[2]="x2" layout="{subplot_layout}" on_range_change="range_change" width="100%" height="100%" selected="{selected_indices}" >{csvdata}</taipy:chart>'      expected_list = [          "<Chart",          "selected0={tpec_TpExPr_selected_indices_TPMDL_0}",          "selected1={tpec_TpExPr_selected_indices_TPMDL_0}",          'height="100%"',          'defaultLayout="{"grid": {"rows": 1, "columns": 2, "subplots": [["xy", "x2y"]], "roworder": "bottom to top"}}"',          'onRangeChange="range_change"',          'updateVars="layout=_TpDi_tpec_TpExPr_subplot_layout_TPMDL_0;selected0=tpec_TpExPr_selected_indices_TPMDL_0;selected1=tpec_TpExPr_selected_indices_TPMDL_0"',          'updateVarName="_TpD_tpec_TpExPr_csvdata_TPMDL_0"',          "data={_TpD_tpec_TpExPr_csvdata_TPMDL_0}",          'width="100%"',      ]      gui._set_frame(inspect.currentframe())      helpers.test_control_html(gui, html_string, expected_list)      def test_map_md(gui: Gui, helpers):      mapData = {  # noqa: F841          "Lat": [              48.4113,              18.0057,              48.6163,              48.5379,              48.5843,              48.612,              48.6286,              48.6068,              48.4489,              48.6548,              18.5721,              48.3734,              17.6398,              48.5765,              48.4407,              48.2286,          ],          "Lon": [              -112.8352,              -65.804,              -113.4784,              -114.0702,              -111.0188,              -110.7939,              -109.4629,              -114.9123,              -112.9705,              -113.965,              -66.5401,              -111.5245,              -64.7246,              -112.1932,              -113.3159,              -104.5863,          ],          "Globvalue": [              0.0875,              0.0892,              0.0908,              0.0933,              0.0942,              0.095,              0.095,              0.095,              0.0958,              0.0958,              0.0958,              0.0958,              0.0958,              0.0975,              0.0983,              0.0992,          ],      }      marker = {"color": "fuchsia", "size": 4}  # noqa: F841      layout = {  # noqa: F841          "dragmode": "zoom",          "mapbox": {"style": "open-street-map", "center": {"lat": 38, "lon": -90}, "zoom": 3},          "margin": {"r": 0, "t": 0, "b": 0, "l": 0},      }      md = "<|{mapData}|chart|type=scattermapbox|marker={marker}|layout={layout}|lat=Lat|lon=Lon|text=Globvalue|mode=markers|>"      gui._set_frame(inspect.currentframe())      expected_list = [          "<Chart",          ""Lat": {"index":",          ""Lon": {"index":",          "data={_TpD_tpec_TpExPr_mapData_TPMDL_0}",          'defaultLayout="{"dragmode": "zoom", "mapbox": {"style": "open-street-map", "center": {"lat": 38, "lon": -90}, "zoom": 3}, "margin": {"r": 0, "t": 0, "b": 0, "l": 0}}"',          'updateVarName="_TpD_tpec_TpExPr_mapData_TPMDL_0"',      ]      helpers.test_control_md(gui, md, expected_list)      def test_chart_indexed_properties(gui: Gui, helpers):      data: t.Dict[str, t.Any] = {}      data["Date"] = [datetime.datetime(2021, 12, i) for i in range(1, 31)]        data["La Rochelle"] = [10 + 6 * random.random() for _ in range(1, 31)]      data["Montpellier"] = [16 + 6 * random.random() for _ in range(1, 31)]      data["Paris"] = [6 + 6 * random.random() for _ in range(1, 31)]        data["La Rochelle 1"] = [x * (1 + (random.random() / 10)) for x in data["La Rochelle"]]      data["La Rochelle 2"] = [x * (1 - (random.random() / 10)) for x in data["La Rochelle"]]        data["Montpellier 1"] = [x * (1 + (random.random() / 10)) for x in data["Montpellier"]]      data["Montpellier 2"] = [x * (1 - (random.random() / 10)) for x in data["Montpellier"]]        md = "<|{data}|chart|x=Date|mode=lines|y[1]=La Rochelle|y[2]=La Rochelle 1|y[3]=La Rochelle 2|y[4]=Montpellier|y[5]=Montpellier 1|y[6]=Montpellier 2|line[2]=dashdot|line[3]=dash|line[5]=dashdot|line[6]=dash|color[2]=blue|color[3]=blue|color[5]=red|color[6]=red|>"        gui._set_frame(inspect.currentframe())      expected_list = [          "<Chart",          ""traces": [["Date_str", "La Rochelle"], ["Date_str", "La Rochelle 1"], ["Date_str", "La Rochelle 2"], ["Date_str", "Montpellier"], ["Date_str", "Montpellier 1"], ["Date_str", "Montpellier 2"]]",          ""lines": [null, {"dash": "dashdot"}, {"dash": "dash"}, null, {"dash": "dashdot"}, {"dash": "dash"}]",      ]      helpers.test_control_md(gui, md, expected_list)      def test_chart_indexed_properties_with_arrays(gui: Gui, helpers):      data: t.Dict[str, t.Any] = {}      data["Date"] = [datetime.datetime(2021, 12, i) for i in range(1, 31)]        data["La Rochelle"] = [10 + 6 * random.random() for _ in range(1, 31)]      data["Montpellier"] = [16 + 6 * random.random() for _ in range(1, 31)]      data["Paris"] = [6 + 6 * random.random() for _ in range(1, 31)]        data["La Rochelle 1"] = [x * (1 + (random.random() / 10)) for x in data["La Rochelle"]]      data["La Rochelle 2"] = [x * (1 - (random.random() / 10)) for x in data["La Rochelle"]]        data["Montpellier 1"] = [x * (1 + (random.random() / 10)) for x in data["Montpellier"]]      data["Montpellier 2"] = [x * (1 - (random.random() / 10)) for x in data["Montpellier"]]        ys = [  # noqa: F841          "La Rochelle",          "La Rochelle 1",          "La Rochelle 2",          "Montpellier",          "Montpellier 1",          "Montpellier 2",      ]      lines = [None, "dashdot", "dash", None, "dashdot", "dash"]  # noqa: F841      colors = [None, "blue", "blue", None, "red", "red"]  # noqa: F841        md = "<|{data}|chart|x=Date|mode=lines|y={ys}|line={lines}|color={colors}|>"        gui._set_frame(inspect.currentframe())      expected_list = [          "<Chart",          ""traces": [["Date_str", "La Rochelle"], ["Date_str", "La Rochelle 1"], ["Date_str", "La Rochelle 2"], ["Date_str", "Montpellier"], ["Date_str", "Montpellier 1"], ["Date_str", "Montpellier 2"]]",          ""lines": [null, {"dash": "dashdot"}, {"dash": "dash"}, null, {"dash": "dashdot"}, {"dash": "dash"}]",      ]      helpers.test_control_md(gui, md, expected_list)


from taipy.gui import Gui      def test_part_md_1(gui: Gui, helpers):      md_string = """  <|part|class_name=class1|  # This is a part  |>  """      expected_list = ["<Part", "<h1", "This is a part"]      helpers.test_control_md(gui, md_string, expected_list)      def test_part_md_2(gui: Gui, helpers):      md_string = """  <|part.start|class_name=class1|>  # This is a part  <|part.end|>  """      expected_list = ["<Part", "<h1", "This is a part"]      helpers.test_control_md(gui, md_string, expected_list)      def test_part_html(gui: Gui, helpers):      html_string = '<taipy:part class_name="class1">
This is a part
</taipy:part>'      expected_list = ["<Part", "<h1", "This is a part"]      helpers.test_control_html(gui, html_string, expected_list)


import random  import string    from example_library import ExampleLibrary    from taipy.gui import Gui    # Initial value  label = "Here is some text"    page = """  # Custom elements example    ## Fraction:    No denominator: <|123|example.fraction|>    Denominator is 0: <|321|example.fraction|denominator=0|>    Regular: <|355|example.fraction|denominator=113|>    ## Custom label:    Colored text: <|{label}|example.label|>    <|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)


from .example_library import ExampleLibrary


from taipy.gui.extension import Element, ElementLibrary, ElementProperty, PropertyType      class ExampleLibrary(ElementLibrary):      def __init__(self) -> None:          # Initialize the set of visual elements for this extension library          self.elements = {              # A static element that displays its properties in a fraction              "fraction": Element(                  "numerator",                  {                      "numerator": ElementProperty(PropertyType.number),                      "denominator": ElementProperty(PropertyType.number),                  },                  render_xhtml=ExampleLibrary._fraction_render,              ),              # A dynamic element that decorates its value              "label": Element(                  "value",                  {"value": ElementProperty(PropertyType.dynamic_string)},                  # The name of the React component (ColoredLabel) that implements this custom                  # element, exported as ExampleLabel in front-end/src/index.ts                  react_component="ExampleLabel",              ),          }        # The implementation of the rendering for the "fraction" static element      @staticmethod      def _fraction_render(props: dict) -> str:          # Get the property values          numerator = props.get("numerator")          denominator = props.get("denominator")          # No denominator or numerator is 0: display the numerator          if denominator is None or int(numerator) == 0:              return f"{numerator}"          # Denominator is zero: display infinity          if int(denominator) == 0:              return '∞'          # 'Normal' case          return f"{numerator}/{denominator}"        def get_name(self) -> str:          return "example"        def get_elements(self) -> dict:          return self.elements        def get_scripts(self) -> list[str]:          # Only one JavaScript bundle for this library.          return ["front-end/dist/exampleLibrary.js"]


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  # Demonstrate how to share variable values across multiple clients.  # This application creates a thread that increments a value every few seconds.  # The value is updated for every client using the state.broadcast() method.  # The text of the button that starts or stops the thread is updated on every client's browser  # using a direct assignment of the state property because the variable is declared 'shared'.  # -----------------------------------------------------------------------------------------  from threading import Event, Thread  from time import sleep    from taipy.gui import Gui, State, broadcast_callback    counter = 0    # Thread management  thread = None  thread_event = Event()    button_texts = ["Start", "Stop"]  # Text in the start/stop button (initially "Start")  button_text = button_texts[0]      # Invoked by the timer  def update_counter(state: State, c):      # Update all clients      state.broadcast("counter", c)      def count(event, gui):      while not event.is_set():          global counter          counter = counter + 1          broadcast_callback(gui, update_counter, [counter])          sleep(2)      # Start or stop the timer when the button is pressed  def start_or_stop(state):      global thread      if thread:  # Timer is running          thread_event.set()          thread = None      else:  # Timer is stopped          thread_event.clear()          thread = Thread(target=count, args=[thread_event, state.get_gui()])          thread.start()      # Update button status.      # Because "button_text" is shared, all clients are updated      state.button_text = button_texts[1 if thread else 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")    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  # Demonstrates the use of the 'rebuild' property of the 'chart' control  # -----------------------------------------------------------------------------------------  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]}    types = [("bar", "Bar"), ("line", "Line")]  selected_type = types[0]    page = """  <|{data}|chart|type={selected_type[0]}|x=X|y=Y|rebuild|>    <|{selected_type}|toggle|lov={types}|>  """    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  import datetime    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 = """  # Gantt - Simple    <|{data}|chart|type=bar|orientation=h|y=Task|x=Date|base=start|layout={layout}|>  """    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  from taipy.gui import Gui    # 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]}    page = """  # Basics - X range    <|{data}|chart|x=X|y=Y|>  """    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  from taipy.gui import Gui      # Function to plot: x^3/3-x  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],  }    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,          },      ]  }    page = """  # Advanced - Annotations    <|{data}|chart|layout={layout}|>  """    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  import numpy    from taipy.gui import Gui      # Return the x and y coordinates of the spiral for the given angle  def spiral(th):      a = 1.120529      b = 0.306349      r = a * numpy.exp(-b * 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))    # 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]]    # 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": ""}    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  }    # 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 = """  ## Heatmap - Drawing on top    <|{data}|chart|type={types}|z[1]=0/z|x={xs}|y={ys}|layout={layout}|options={options}|>  """    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  import random    from taipy.gui import Gui    # Data set made of two series of random numbers  data = {"A": [random.random() for i in range(200)], "B": [random.random() for i in range(200)]}    # Names of the two traces  names = ["A samples", "B samples"]    layout = {      # Make the histogram stack the data sets      "barmode": "stack"  }    page = """  # Histogram - Stacked    <|{data}|chart|type=histogram|x[1]=A|x[2]=B|name={names}|layout={layout}|>  """    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  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"],  }    page = """  # Waterfall - Simple    <|{data}|chart|type=waterfall|x=Day|y=Values|measure=Measure|>  """    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  from taipy.gui import Gui    # Busiest US airports  # Source: https://en.wikipedia.org/wiki/List_of_busiest_airports_by_passenger_traffic  airports = {      "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 = [      {"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"]    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}    page = """  # Maps - Multiple Lines    <|chart|properties={properties}|>  """    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  from taipy.gui import Gui    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]  }    layout = {      # Hide the legend      "showlegend": False  }    options = {      # Hide the texts      "textinfo": "none"  }    page = """  # Pie - Style    <|{values}|chart|type=pie|marker={marker}|options={options}|layout={layout}|>  """    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  from datetime import datetime    import numpy    from taipy.gui import Gui      def generate_hand_shapes():      # Retrieve and store the current, local time      time_now = datetime.now()      hours = time_now.hour      minutes = time_now.minute      seconds = time_now.second        # Compute the angle that represents the hours      hours_angle = 360 * ((hours % 12) / 12 + (minutes % 60) / 60 / 60 + (seconds % 60) / 60 / 60 / 60)      # Short and thick hand for the hours      hours_hand = {"r": [0, 4, 5, 4, 0], "a": [0, hours_angle - 7, hours_angle, hours_angle + 7, 0]}        # Compute the angle that represents the minutes      minutes_angle = 360 * ((minutes % 60) / 60 + (seconds % 60) / 60 / 60)      # Longer and slighly thinner hand for the minutes      minutes_hand = {"r": [0, 6, 8, 6, 0], "a": [0, minutes_angle - 4, minutes_angle, minutes_angle + 4, 0]}        # Compute the angle that represents the seconds      seconds_angle = 360 * (seconds % 60) / 60      # Even longer and thinner hand for the seconds      seconds_hand = {"r": [0, 8, 10, 8, 0], "a": [0, seconds_angle - 2, seconds_angle, seconds_angle + 2, 0]}      # Build and return the whole data set      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 = """  # Polar - Tick texts    <|{data}|chart|type=scatterpolar|properties={properties}|>  """  Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  from taipy.gui import Gui    data = {"Types": ["Visits", "Downloads", "Prospects", "Invoiced", "Closed"], "Visits": [13873, 10533, 5443, 2703, 908]}    layout = {      # Stack the areas      "funnelmode": "stack",      # Hide the legend      "showlegend": False,  }    page = """  # Funnel - Area    <|{data}|chart|type=funnelarea|values=Visits|text=Types|layout={layout}|>  """    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  import pandas    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 = """  # Bar - Stacked    <|{data}|chart|type=bar|x=Year|y[1]=Won|y[2]=Lost|layout={layout}|>  """    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  import numpy  import pandas    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))}    page = """  # Basics - Timeline    <|{data}|chart|x=Date|y=Value|>  """    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  import random    from taipy.gui import Gui    # Data set made of two series of random numbers  data = [{"x": [random.random() + 1 for i in range(100)]}, {"x": [random.random() + 1.1 for i 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"}},  ]    layout = {      # Overlay the two histograms      "barmode": "overlay",      # Hide the legend      "showlegend": False,  }    page = """  # Histogram - Overlay    <|{data}|chart|type=histogram|options={options}|layout={layout}|>  """  Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  from taipy.gui import Gui    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"},  ]    page = """  # Filled Area - Overlay    <|{data}|chart|mode=none|x=Day|y[1]=Items|y[2]=Price|options={options}|>  """    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  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 = 100-x*x      "y2": [100 - x * x for x in x_range],  }    page = """  # Basics - Multiple traces    <|{data}|chart|x=x|y[1]=y1|y[2]=y2|>  """    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  # Two data sets as a bar chart  import pandas    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    page = """  # Bar - Multiple    <|{data}|chart|type=bar|x=Year|y[1]=Won|y[2]=Lost|>  """    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # You may need to install the yfinance package as well.  # -----------------------------------------------------------------------------------------  import yfinance    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    page = """  # Candlestick - Simple    <|{stock}|chart|type=candlestick|x=Date|open=Open|close=Close|low=Low|high=High|>  """    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  import random    import numpy    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],  }    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  }    selected_indices = []    mean_value = 0.0      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      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()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  import math  import random    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]    # 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}  }    page = """  # Error bars - Simple    <|{data}|chart|x=x|y[1]=y1|y[2]=y2|options[1]={options}|>  """    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  from taipy.gui import Gui    data = {      "Day": ["Mon", "Tue", "Wed", "Thu", "Fri"],      "Items": [32, 25, 86, 60, 70],  }    options = {      # Fill to x axis      "fill": "tozeroy"  }    page = """  # Filled Area - Simple    <|{data}|chart|x=Day|y=Items|options={options}|>  """    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  import datetime    import dateutil.relativedelta    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)    # Data  # All arrays have the same size (the number of months to track)  prices = {      # 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"]))]    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",  }    page = """  # Continuous Error - Multiple traces    <|{data}|chart|properties={properties}|>  """    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  import random    from taipy.gui import Gui    # 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 i 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 i in y],          # The 'minus' error data is a series of random numbers          "arrayminus": [random.uniform(0, 2) for i in y],          # Color of the error bar          "color": "red",      }  }    page = """  # Error bars - Asymmetric    <|{data}|chart|type=bar|x=x|y=y|orientation=h|options={options}|>  """    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  import math    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):      a = math.radians(angle)      sa = math.sin(a)      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,  }    page = """  # Polar - Simple    <|{data}|chart|type=scatterpolar|mode=lines|>  """    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  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"]    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},      },  ]    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 = """  # Pie - Multiple    <|{data}|chart|type=pie|x[1]=0/values|x[2]=1/values|options={options}|layout={layout}|>  """    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  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)]    # 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]},  ]    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()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  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],  }    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"}    page = """  # Maps - Simple    <|{data}|chart|type=scattergeo|mode=lines|lat=lat|lon=lon|line={line}|layout={layout}|>  """    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  import random    from taipy.gui import Gui    # Random data set  data = {"Count": [random.random() for i in range(100)]}    page = """  # Histograms - Horizontal    <|{data}|chart|type=histogram|y=Count|>  """    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  import pandas    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,  ]    start = 50  size = 100  data = {"Date": dates[start:size], "Temp°C": temp[start:size], "Min": min[start:size], "Max": max[start:size]}    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()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  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],      },  ]    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]}},  ]    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 = """  ## Scatter - Customize markers    <|{data}|chart|mode=markers|layout={layout}|marker={markers}|>  """    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  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],  }    # Name of the three sets to trace  items = ["Milk", "Bread", "Apples"]    options = {      # Group all traces in the same stack group      "stackgroup": "first_group"  }    page = """  # Filled Area - Stacked    <|{data}|chart|mode=none|x=Month|y={items}|options={options}|>  """    Gui(page).run()


#  # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with  # the License. You may obtain a copy of the License at  #  #        http://www.apache.org/licenses/LICENSE-2.0  #  # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on  # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the  # specific language governing permissions and limitations under the License.  # -----------------------------------------------------------------------------------------  # To execute this script, make sure that the taipy-gui package is installed in your  # Python environment and run:  #     python <script>  # -----------------------------------------------------------------------------------------  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"],      },  ]    page = """  # Waterfall - Period levels    <|{data}|chart|type=waterfall|x=0/Period|y=1/Cash Flow|measure=1/Measure|>  """    Gui(page).run()