Spaces:
Running
Running
File size: 4,547 Bytes
fd0472a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
# -*- 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 |