from smartdata import SmartspacesCSVAdapter adapter = SmartspacesCSVAdapter() datasets = [ {'lbl': 'Queens', 'id': 3}, {'lbl': 'Hugh Aston', 'id': 6}, {'lbl': 'Kimberlin', 'id': 8}, {'lbl': 'Campus Centre', 'id': 10}, {'lbl': 'John Whitehead', 'id': 12} ] for dataset in datasets: dataset['dataframe'] = adapter.dataframe(dataset['id'], 'all') datasets[0]['dataframe'] fig, axes = subplots(5, 1, figsize=(12, 8)) for i, dataset in enumerate(datasets): ax = axes[i] ax.plot(dataset['dataframe'].index, dataset['dataframe'], c="black", lw=0.15) ax.set_title(dataset['lbl']) ax.set_ylabel('consumption\n(kWh)') tight_layout() for dataset in datasets: dataset['daily_min'] = dataset['dataframe'].resample('D', how='min') dataset['daily_sum'] = dataset['dataframe'].resample('D', how='sum') dataset['weekly_min'] = dataset['dataframe'].resample('W', how='min') fmt = mpl.dates.DateFormatter(fmt="%b\n%Y") loc = mpl.dates.MonthLocator(interval=4) fig, axes = subplots(5, 1, figsize=(12, 10), sharex=True) for i, dataset in enumerate(datasets): axes[i].set_title(dataset['lbl']) axes[i].plot(dataset['dataframe'].index, dataset['dataframe'], label="raw", lw=0.2, alpha=0.5, c='black') axes[i].plot(dataset['daily_min'].index, dataset['daily_min'], label="daily", lw=0.2, c='blue') axes[i].plot(dataset['weekly_min'].index, dataset['weekly_min'], label="weekly", c='red', lw=1) axes[i].xaxis.set_major_locator(loc) axes[i].xaxis.set_major_formatter(fmt) axes[i].set_ylabel('minimum daily/weekly\nconsumption (kWh)') leg = axes[i].legend(loc=2) tight_layout() fmt = mpl.dates.DateFormatter(fmt="%b\n%Y") loc = mpl.dates.MonthLocator(interval=4) fig, axes = subplots(5, 1, figsize=(12, 10), sharex=True) for i, dataset in enumerate(datasets): baseload_pct = ((dataset['daily_min'].sum()*48 / dataset['daily_sum'].sum()) * 100) axes[i].set_title(dataset['lbl']) # axes[i].plot(dataset['daily_sum'].index, dataset['daily_sum']['consumption (kWh)'], label='occupied load', color='blue') # axes[i].plot(dataset['daily_min'].index, dataset['daily_min']['consumption (kWh)']*48, label='unoccupied load', color='red') axes[i].text(0.01, 0.1, "baseload as proportion of total consumption = %3.1f%%" % baseload_pct, transform=axes[i].transAxes) axes[i].fill_between(dataset['daily_sum'].index, dataset['daily_min']['consumption (kWh)']*48, dataset['daily_sum']['consumption (kWh)'], label='occupied load', color='blue', alpha=0.5, lw=0.2) axes[i].fill_between(dataset['daily_sum'].index, dataset['daily_min']['consumption (kWh)']*48, label='baseload', color='red', alpha=0.5, lw=0.2) axes[i].set_ylim(0, axes[i].get_ylim()[1]) axes[i].xaxis.set_major_locator(loc) axes[i].xaxis.set_major_formatter(fmt) axes[i].set_ylabel('daily\nconsumption (kWh)') leg = axes[i].legend(loc=2) tight_layout()