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 random_colour(): r = random.randint(0,255) g = random.randint(0,255) b = random.randint(0,255) rgb = [r,g,b] return rgb def generate_charts (meter_num) : if (meter_num == 1) : fig_title = f"Daily Readings for Light Meter 1 (Andy)" else : fig_title = f"Daily Readings for Light Meter 2 (Tony)" p = figure(title = fig_title, x_axis_label = "Reading Id. (not same as database)", y_axis_label = "Light Reading", sizing_mode = "stretch_both") p.axis.major_label_text_font_size = "12px" p.axis.major_label_standoff = 10 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] x_raw_vals = [] y_raw_vals = [] counter = 0 for row in file_data : x_raw_vals.append(counter) counter += 1 y_raw_vals.append(row[1]) x_vals = x_raw_vals # np.asarray(x_raw_vals).astype(int) y_vals = np.asarray(y_raw_vals).astype(int) p.line(x = x_vals, y = y_vals, line_width = 2, line_color = random_colour()) output_file(f"output/lm{meter_num}-dailies-overlayed.html", title=f"Light Meter {meter_num} Daily Overlayed") save(p) print("Generating charts for Light Meter 1...") generate_charts(1) print("Generating charts for Light Meter 2...") generate_charts(2)