Spaces:
Running
Running
# -*- coding: utf-8 -*- | |
""" | |
Created on Fri Mar 3 12:57:17 2023 | |
@author: BorowyP | |
""" | |
import pandas as pd | |
import numpy as np | |
import hvplot.pandas # Adds .hvplot and .interactive methods to Pandas dataframes | |
import panel as pn # Panel is a simple, flexible and enterprise-ready data app framework | |
import holoviews as hv | |
from holoviews.operation.timeseries import rolling, rolling_outlier_std | |
PALETTE = ["#ff6f69", "#ffcc5c", "#88d8b0", ] | |
df_nied = pd.read_csv('Nied_holzdeko_csv.csv' , | |
encoding_errors='ignore', | |
sep=';', | |
usecols=[1,2, 3, 4,5,6], | |
decimal=',') | |
def createStndrt(stnd_kennz, Stndrt,K_nK): | |
df = df_nied.loc[df_nied['FNR + NWP'] == stnd_kennz].copy() | |
df['Standort'] = Stndrt | |
df['K_nK'] = K_nK | |
df.index = pd.to_datetime(df_nied.loc[df_nied['FNR + NWP'] == '3NE']['MessDat'], dayfirst=True) | |
if K_nK == 'K': | |
df['K'] = df['Menge'] | |
else: | |
df['nK'] = df['Menge'] | |
return df | |
glienig_nied_K = createStndrt('3NE', 'Glienig','K') | |
glienig_nied_nK = createStndrt('3NW', 'Glienig','nK') | |
grlieb_nied_K = createStndrt('4SE', 'Groß Liebitz','K') | |
grlieb_nied_nK= createStndrt('4NW', 'Groß Liebitz','nK') | |
krausnick_nied_K = createStndrt('9NE', 'Krausnick','K') | |
krausnick_nied_nK = createStndrt('9NW', 'Krausnick','nK') | |
hberg_nied_K = createStndrt('10SE', 'Hangelsberg','K') | |
hberg_nied_nK = createStndrt('10SW', 'Hangelsberg','nK') | |
halbe_nied_K = createStndrt('12NE', 'Halbe','K') | |
halbe_nied_nK = createStndrt('12NW', 'Halbe','nK') | |
spreeau_nied_K = createStndrt('19NE', 'Spreeau','K') | |
spreeau_nied_nK = createStndrt('19NW', 'Spreeau','nK') | |
nied = pd.concat([glienig_nied_K,glienig_nied_nK, | |
grlieb_nied_K, grlieb_nied_nK, | |
krausnick_nied_K, krausnick_nied_nK, | |
hberg_nied_K, hberg_nied_nK, | |
halbe_nied_K, halbe_nied_nK, | |
spreeau_nied_K, spreeau_nied_nK]) | |
nied = nied.drop(nied.columns[[1]], axis=1) | |
nied_inter = nied.interactive() | |
yaxis = pn.widgets.ToggleGroup( | |
name='Kalkung', | |
options=['K','nK'], | |
value=['K'], | |
button_type='success') | |
nied_date_slider = pn.widgets.DateRangeSlider(name='Date', start=nied.index.min(), end=nied.index.max()) | |
Stndrt = pn.widgets.RadioButtonGroup(name='Standort', options=['Glienig', 'Groß Liebitz', 'Krausnick', 'Halbe', 'Spreeau', 'Hangelsberg'],button_type='success') | |
nied_pipe = ( | |
nied_inter[ | |
(nied_inter.Standort == Stndrt ) & | |
(nied_inter.K_nK.isin(yaxis)) & | |
(nied_inter.index >= nied_date_slider.param.value_start) & | |
(nied_inter.index <= nied_date_slider.param.value_end) | |
] | |
.groupby(['MessDat'])[yaxis].mean() | |
) | |
nied_lin_plot = nied_pipe.hvplot(x='MessDat', | |
xlabel='Datum', | |
y=yaxis, | |
#y='Menge', | |
ylabel= 'Niederschlag [mm]', | |
title=Stndrt, | |
#by='origin', | |
color=PALETTE, | |
line_width=2) | |
nied_lin_plot | |
summe = ( | |
nied_inter[ | |
(nied_inter.index >= nied_date_slider.param.value_start) & | |
(nied_inter.index <= nied_date_slider.param.value_end)] | |
.groupby(['Standort', 'K_nK']).sum() | |
) | |
summe_plot = summe.hvplot(x='Standort', y=('Menge'), by='K_nK', kind='bar', | |
title='Summe Niederschlag', xlabel='Standort', ylabel='Menge [mm]') | |
hd_logo = pn.pane.PNG('HD_Logo.png', width=100) | |
hd_logo | |
lfe_logo = pn.pane.PNG('LFE_Logo.png', width=100) | |
fnr_logo = pn.pane.PNG('fnr_logo.png', width=100) | |
template = pn.template.FastListTemplate( | |
title='Holzdeko Dashboard', | |
sidebar=[hd_logo, | |
pn.pane.Markdown("## Einstellungen"), | |
'Standort',Stndrt, | |
'gekalkt/ungekalkt', yaxis, | |
lfe_logo, | |
fnr_logo | |
#'Boden', | |
#'Gekalkt/ungekalkt', yaxis, | |
], | |
main=[pn.pane.Markdown("## Niederschlag"), | |
nied_date_slider, | |
nied_lin_plot.panel(), | |
summe_plot,#.panel() #NIEDERSCHLAG | |
#accent_base_color="#88d8b0", | |
#header_background="#88d8b0", | |
]) | |
template.servable(); | |
#print('fertig!') | |
# To launch this dashboard as a web server, we can simply run | |
# cd C:\Users\BorowyP\Desktop\Dashboard-Preasi\soil_air\ | |
# panel serve 20230303_niederschlag_docker.ipynb --autoreload |