|
|
|
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 = "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
|
|
|
|
|
|
|
|
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 = []
|
|
|
|
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)
|
|
|
|
|
|
|
|
p.line(x = x_vals,
|
|
|
|
y = y_vals,
|
|
|
|
line_width = 2,
|
|
|
|
line_color = random_colour())
|
|
|
|
|
|
|
|
output_file(f"output/lm{meter_num}-daily-side-by-side.html",
|
|
|
|
title=f"Light Meter {meter_num} Dailies Side-by-Side ")
|
|
|
|
save(p)
|
|
|
|
|
|
|
|
print("Generating charts for Light Meter 1...")
|
|
|
|
generate_charts(1)
|
|
|
|
print("Generating charts for Light Meter 2...")
|
|
|
|
generate_charts(2)
|