Browse Source
This script places all the daily reading for a given Light Meter and overlays them on top of each other on the chart. Because each file (for each day) have different combinations of date/timestamps, the charts has to switch to using plain integers for the x-axis. This means you can't glean much data from a time/date spective but the charts for both Light Meters do help relay the amount of activity which happened in them.master
Craig Oates
1 year ago
1 changed files with 60 additions and 0 deletions
@ -0,0 +1,60 @@
|
||||
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 1 Daily Overlayed") |
||||
save(p) |
||||
|
||||
print("Generating charts for Light Meter 1...") |
||||
generate_charts(1) |
||||
print("Generating charts for Light Meter 2...") |
||||
generate_charts(2) |
Loading…
Reference in new issue