remove snakemake dependencies in plot_summary
This commit is contained in:
parent
f28a088ea3
commit
0da77a7600
@ -21,7 +21,7 @@ Description
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import logging
|
import logging
|
||||||
from _helpers import configure_logging
|
from _helpers import configure_logging, retrieve_snakemake_keys
|
||||||
|
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
@ -55,7 +55,7 @@ def rename_techs(label):
|
|||||||
preferred_order = pd.Index(["transmission lines","hydroelectricity","hydro reservoir","run of river","pumped hydro storage","onshore wind","offshore wind ac", "offshore wind dc","solar PV","solar thermal","OCGT","hydrogen storage","battery storage"])
|
preferred_order = pd.Index(["transmission lines","hydroelectricity","hydro reservoir","run of river","pumped hydro storage","onshore wind","offshore wind ac", "offshore wind dc","solar PV","solar thermal","OCGT","hydrogen storage","battery storage"])
|
||||||
|
|
||||||
|
|
||||||
def plot_costs(infn, fn=None):
|
def plot_costs(infn, config, fn=None):
|
||||||
|
|
||||||
## For now ignore the simpl header
|
## For now ignore the simpl header
|
||||||
cost_df = pd.read_csv(infn,index_col=list(range(3)),header=[1,2,3])
|
cost_df = pd.read_csv(infn,index_col=list(range(3)),header=[1,2,3])
|
||||||
@ -67,7 +67,7 @@ def plot_costs(infn, fn=None):
|
|||||||
|
|
||||||
df = df.groupby(df.index.map(rename_techs)).sum()
|
df = df.groupby(df.index.map(rename_techs)).sum()
|
||||||
|
|
||||||
to_drop = df.index[df.max(axis=1) < snakemake.config['plotting']['costs_threshold']]
|
to_drop = df.index[df.max(axis=1) < config['plotting']['costs_threshold']]
|
||||||
|
|
||||||
print("dropping")
|
print("dropping")
|
||||||
|
|
||||||
@ -84,7 +84,7 @@ def plot_costs(infn, fn=None):
|
|||||||
fig, ax = plt.subplots()
|
fig, ax = plt.subplots()
|
||||||
fig.set_size_inches((12,8))
|
fig.set_size_inches((12,8))
|
||||||
|
|
||||||
df.loc[new_index,new_columns].T.plot(kind="bar",ax=ax,stacked=True,color=[snakemake.config['plotting']['tech_colors'][i] for i in new_index])
|
df.loc[new_index,new_columns].T.plot(kind="bar",ax=ax,stacked=True,color=[config['plotting']['tech_colors'][i] for i in new_index])
|
||||||
|
|
||||||
|
|
||||||
handles,labels = ax.get_legend_handles_labels()
|
handles,labels = ax.get_legend_handles_labels()
|
||||||
@ -92,7 +92,7 @@ def plot_costs(infn, fn=None):
|
|||||||
handles.reverse()
|
handles.reverse()
|
||||||
labels.reverse()
|
labels.reverse()
|
||||||
|
|
||||||
ax.set_ylim([0,snakemake.config['plotting']['costs_max']])
|
ax.set_ylim([0,config['plotting']['costs_max']])
|
||||||
|
|
||||||
ax.set_ylabel("System Cost [EUR billion per year]")
|
ax.set_ylabel("System Cost [EUR billion per year]")
|
||||||
|
|
||||||
@ -109,7 +109,7 @@ def plot_costs(infn, fn=None):
|
|||||||
fig.savefig(fn, transparent=True)
|
fig.savefig(fn, transparent=True)
|
||||||
|
|
||||||
|
|
||||||
def plot_energy(infn, fn=None):
|
def plot_energy(infn, config, fn=None):
|
||||||
|
|
||||||
energy_df = pd.read_csv(infn, index_col=list(range(2)),header=[1,2,3])
|
energy_df = pd.read_csv(infn, index_col=list(range(2)),header=[1,2,3])
|
||||||
|
|
||||||
@ -120,7 +120,7 @@ def plot_energy(infn, fn=None):
|
|||||||
|
|
||||||
df = df.groupby(df.index.map(rename_techs)).sum()
|
df = df.groupby(df.index.map(rename_techs)).sum()
|
||||||
|
|
||||||
to_drop = df.index[df.abs().max(axis=1) < snakemake.config['plotting']['energy_threshold']]
|
to_drop = df.index[df.abs().max(axis=1) < config['plotting']['energy_threshold']]
|
||||||
|
|
||||||
print("dropping")
|
print("dropping")
|
||||||
|
|
||||||
@ -137,7 +137,7 @@ def plot_energy(infn, fn=None):
|
|||||||
fig, ax = plt.subplots()
|
fig, ax = plt.subplots()
|
||||||
fig.set_size_inches((12,8))
|
fig.set_size_inches((12,8))
|
||||||
|
|
||||||
df.loc[new_index,new_columns].T.plot(kind="bar",ax=ax,stacked=True,color=[snakemake.config['plotting']['tech_colors'][i] for i in new_index])
|
df.loc[new_index,new_columns].T.plot(kind="bar",ax=ax,stacked=True,color=[config['plotting']['tech_colors'][i] for i in new_index])
|
||||||
|
|
||||||
|
|
||||||
handles,labels = ax.get_legend_handles_labels()
|
handles,labels = ax.get_legend_handles_labels()
|
||||||
@ -145,7 +145,7 @@ def plot_energy(infn, fn=None):
|
|||||||
handles.reverse()
|
handles.reverse()
|
||||||
labels.reverse()
|
labels.reverse()
|
||||||
|
|
||||||
ax.set_ylim([snakemake.config['plotting']['energy_min'],snakemake.config['plotting']['energy_max']])
|
ax.set_ylim([config['plotting']['energy_min'], config['plotting']['energy_max']])
|
||||||
|
|
||||||
ax.set_ylabel("Energy [TWh/a]")
|
ax.set_ylabel("Energy [TWh/a]")
|
||||||
|
|
||||||
@ -170,10 +170,12 @@ if __name__ == "__main__":
|
|||||||
attr='', ext='png', country='all')
|
attr='', ext='png', country='all')
|
||||||
configure_logging(snakemake)
|
configure_logging(snakemake)
|
||||||
|
|
||||||
summary = snakemake.wildcards.summary
|
paths, config, wildcards, logs, out = retrieve_snakemake_keys(snakemake)
|
||||||
|
|
||||||
|
summary = wildcards.summary
|
||||||
try:
|
try:
|
||||||
func = globals()[f"plot_{summary}"]
|
func = globals()[f"plot_{summary}"]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
raise RuntimeError(f"plotting function for {summary} has not been defined")
|
raise RuntimeError(f"plotting function for {summary} has not been defined")
|
||||||
|
|
||||||
func(os.path.join(snakemake.input[0], f"{summary}.csv"), snakemake.output[0])
|
func(os.path.join(paths[0], f"{summary}.csv"), config, out[0])
|
||||||
|
Loading…
Reference in New Issue
Block a user