heatmap-annotated.py 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. # Copyright 2023 Avaiga Private Limited
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
  4. # the License. You may obtain a copy of the License at
  5. #
  6. # http://www.apache.org/licenses/LICENSE-2.0
  7. #
  8. # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
  9. # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
  10. # specific language governing permissions and limitations under the License.
  11. # -----------------------------------------------------------------------------------------
  12. # To execute this script, make sure that the taipy-gui package is installed in your
  13. # Python environment and run:
  14. # python <script>
  15. # -----------------------------------------------------------------------------------------
  16. from taipy.gui import Gui
  17. data = {
  18. "Temperatures": [
  19. [17.2, 27.4, 28.6, 21.5],
  20. [5.6, 15.1, 20.2, 8.1],
  21. [26.6, 22.8, 21.8, 24.0],
  22. [22.3, 15.5, 13.4, 19.6],
  23. ],
  24. "Cities": ["Hanoi", "Paris", "Rio", "Sydney"],
  25. "Seasons": ["Winter", "Spring", "Summer", "Autumn"],
  26. }
  27. layout = {
  28. # This array contains the information we want to display in the cells
  29. # These are filled later
  30. "annotations": [],
  31. # No ticks on the x axis, show labels on top the of the chart
  32. "xaxis": {"ticks": "", "side": "top"},
  33. # No ticks on the y axis
  34. # Add a space character for a small margin with the text
  35. "yaxis": {"ticks": "", "ticksuffix": " "},
  36. }
  37. seasons = data["Seasons"]
  38. cities = data["Cities"]
  39. # Iterate over all cities
  40. for city in range(len(cities)):
  41. # Iterate over all seasons
  42. for season in range(len(seasons)):
  43. temperature = data["Temperatures"][city][season]
  44. # Create the annotation
  45. annotation = {
  46. # The name of the season
  47. "x": seasons[season],
  48. # The name of the city
  49. "y": cities[city],
  50. # The temperature, as a formatted string
  51. "text": f"{temperature}\N{DEGREE SIGN}C",
  52. # Change the text color depending on the temperature
  53. # so it results in a better contrast
  54. "font": {"color": "white" if temperature < 14 else "black"},
  55. # Remove the annotation arrow
  56. "showarrow": False,
  57. }
  58. # Add the annotation to the layout's annotations array
  59. layout["annotations"].append(annotation)
  60. page = """
  61. ## Heatmap - Annotated
  62. <|{data}|chart|type=heatmap|z=Temperatures|x=Seasons|y=Cities|layout={layout}|>
  63. """
  64. Gui(page).run()