from bokeh.plotting import figure, output_file, save, show from bokeh.models import Legend, ColumnDataSource import bokeh.palettes import pandas as pd import numpy as np import random import glob import os def generate_charts (meter_num) : files = glob.glob(f"data/light-meter-{meter_num}/*.csv") for file_path in files : single_file = pd.read_csv (file_path, sep="," ,header=None, index_col=False, dtype='unicode') file_data = single_file.values[1:] file_name = os.path.splitext(os.path.basename(file_path))[0] if (meter_num == 1) : fig_title = f"Readings for Light Meter 1 (Andy) on {file_name}" else : fig_title = f"Readings for Light Meter 2 (Tony) on {file_name}" p = figure(title = fig_title, x_axis_label = "Date", y_axis_label = "Light Reading", x_axis_type = 'datetime', sizing_mode = "stretch_both") p.axis.major_label_text_font_size = "12px" p.axis.major_label_standoff = 10 # p.yaxis.fixed_location = 0 x_raw_vals = [] y_raw_vals = [] for row in file_data : x_raw_vals.append(row[0]) y_raw_vals.append(row[1]) x_vals = pd.to_datetime(x_raw_vals) y_vals = np.asarray(y_raw_vals).astype(int) if (meter_num == 1) : color = "blue" else : color = "orange" p.line(x = x_vals, y = y_vals, line_width = 2, line_color = color) output_file(f"output/lm{meter_num}-{file_name}.html", title=f"Light Meter 1: {file_name}") save(p) print("Generating charts for Light Meter 1...") generate_charts(1) print("Generating charts for Light Meter 2...") generate_charts(2)