10. Weather Ho Chi Minh (sparklines)

This Python script creates a stacked sparkline dashboard to visualize weather data from Ho Chi Minh City.

The script reads multiple weather data files, combines them, and then generates a tall figure containing a series of small, individual area charts (one for each weather metric like temperature, humidity, etc.), all sharing the same time axis.

 13 # -------------------
 14 # Main
 15 # -------------------
 16 # https://chart-studio.plotly.com/~empet/13748/sparklines/#/code
 17 # https://omnipotent.net/jquery.sparkline/#s-about
 18 # https://chart-studio.plotly.com/create/?fid=Dreamshot:8025#/
 19
 20 # Libraries
 21 import glob
 22 import numpy as np
 23 import pandas as pd
 24 import plotly.express as px
 25 import plotly.graph_objects as go
 26
 27 from pandas.tseries.offsets import DateOffset
 28 from plotly.subplots import make_subplots
 29 from plotly.io import show
 30
 31 try:
 32     __file__
 33     TERMINAL = True
 34 except:
 35     TERMINAL = False
 36
 37 # Constants
 38 colors = px.colors.sequential.Viridis_r
 39 colors += px.colors.sequential.Viridis_r
 40
 41 # -------------------
 42 # Load data
 43 # -------------------
 44 # Define folder
 45 folder = '../../datasets/weather-hmc-dataset/'
 46
 47 # Load data
 48 data = pd.concat([pd.read_csv(f) \
 49     for f in glob.glob('%s/*.csv' % folder)])
 50
 51 # Drop duplicates
 52 data = data.drop_duplicates()
 53 data['dates'] = pd.to_datetime(data['Date time'])
 54 data = data.set_index('dates')
 55 data = data.drop(columns=['Name',
 56                           'Date time',
 57                           'Conditions'])
 58
 59 if TERMINAL:
 60     print("\nData:")
 61     print(data)
 62 data
 63
 64
 65 # ----------------
 66 # Visualize
 67 # ----------------
 68 # Create layout
 69 layout = {
 70   "font": {"family": "Georgia, serif"},
 71   "title": "Weather Ho Chi Minh",
 72   #"width": 500,
 73   "height": 1000,
 74   #"margin": {"t": 80},
 75   "paper_bgcolor": 'rgba(0,0,0,0)',  # transparent
 76   "plot_bgcolor": 'rgba(0,0,0,0)',  # transparent
 77   #"autosize": False,
 78   "hovermode": "closest",
 79   "showlegend": False,
 80 }
 81
 82 # Create figure
 83 fig = make_subplots(rows=data.shape[1], cols=1,
 84                     shared_xaxes=True,
 85                     subplot_titles=[t for t in data.columns])
 86
 87 # Add traces
 88 for i, column in enumerate(data.columns):
 89     # Colors
 90     c = colors[i]
 91     x = data.index
 92     y = data[column]
 93
 94     # Add trace
 95     fig.add_trace(go.Scatter(x=x, y=y,
 96         name=column,
 97         mode='lines', fill='tozeroy',
 98         line=dict(color=c, width=0.5)),
 99         row=i+1, col=1)
100
101     # Update axes
102     fig.update_yaxes(title_text='', row=i+1, col=1)
103
104 # Update layout
105 fig.update_layout(layout)
106
107 # Show
108 show(fig)

Total running time of the script: ( 0 minutes 2.446 seconds)

Gallery generated by Sphinx-Gallery