Data processing and plotting for 'Personal Flash' artworks. https://www.nicolaellisandritherdon.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

60 lines
1.9 KiB

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)