diff --git a/scripts/plotly_streamlit.py b/scripts/plotly_streamlit.py
index da8d771..2d7eb6a 100755
--- a/scripts/plotly_streamlit.py
+++ b/scripts/plotly_streamlit.py
@@ -8,6 +8,7 @@ from datetime import timedelta, datetime
from pathlib import Path
import sqlite3
from sqlite3 import Connection
+import plotly.express as px
userDir = os.path.expanduser('~')
URI_SQLITE_DB = userDir + '/BirdNET-Pi/scripts/birds.db'
@@ -122,42 +123,43 @@ filt=df2['Com_Name']==specie
df_counts=sum(df5==specie)
-fig = make_subplots(
+
+
+
+if resample_time != '1D':
+ fig = make_subplots(
rows=3, cols =2,
specs= [[{"type":"xy","rowspan":3}, {"type":"polar","rowspan":2}], [{"rowspan":1}, {"rowspan":1} ], [None, {"type":"xy","rowspan":1}]],
- subplot_titles=('Top '+ str(top_N) + ' Species in Date Range '+str(Date_Slider[0])+' to '+str(Date_Slider[1])+'',
+ subplot_titles=('Top '+ str(top_N) + ' Species in Date Range '+str(Date_Slider[0])+' to '+str(Date_Slider[1])+' for '+str(resample_sel)+' sampling interval.'+'',
'Total Detect:'+str('{:,}'.format(df_counts))+
' Confidence Max:'+str('{:.2f}%'.format(max(df2[df2['Com_Name']==specie]['Confidence'])*100))+
' '+' Median:'+str('{:.2f}%'.format(np.median(df2[df2['Com_Name']==specie]['Confidence'])*100))
)
- )
-fig.layout.annotations[1].update(x=0.7,y=0.25, font_size=15)
+ )
+ fig.layout.annotations[1].update(x=0.7,y=0.25, font_size=15)
-#Plot seen species for selected date range and number of species
-fig.add_trace(go.Bar(y=top_N_species.index, x=top_N_species, orientation='h'), row=1,col=1)
+ #Plot seen species for selected date range and number of species
+ fig.add_trace(go.Bar(y=top_N_species.index, x=top_N_species, orientation='h'), row=1,col=1)
-fig.update_layout(
- margin=dict(l=0, r=0, t=50, b=0),
- yaxis={'categoryorder':'total ascending'})
+ fig.update_layout(
+ margin=dict(l=0, r=0, t=50, b=0),
+ yaxis={'categoryorder':'total ascending'})
-# Set 360 degrees, 24 hours for polar plot
-theta = np.linspace(0.0, 360, 24, endpoint=False)
+ # Set 360 degrees, 24 hours for polar plot
+ theta = np.linspace(0.0, 360, 24, endpoint=False)
-specie_filt= df5==specie
-df3=df5[specie_filt]
+ specie_filt= df5==specie
+ df3=df5[specie_filt]
-detections2= pd.crosstab(df3, df3.index.hour)
+ detections2= pd.crosstab(df3, df3.index.hour)
-d=pd.DataFrame(np.zeros((23,1))).squeeze()
-detections = hourly.loc[specie]
-detections=(d+detections).fillna(0)
-
-
-if resample_time != '1D':
+ d=pd.DataFrame(np.zeros((23,1))).squeeze()
+ detections = hourly.loc[specie]
+ detections=(d+detections).fillna(0)
fig.add_trace(go.Barpolar(r = detections, theta=theta), row=1, col=2)
fig.update_layout(
autosize=False,
@@ -191,15 +193,18 @@ if resample_time != '1D':
else:
fig = make_subplots(
rows=1, cols =2,
-# specs= [[{"type":"xy","rowspan":1}],
-# [{"rowspan":1}],
-# ],
-# subplot_titles=('Top '+ str(top_N) + ' Species in Date Range '+str(Date_Slider[0])+' to '+str(Date_Slider[1])+'',
+ specs= [[{"type":"xy","rowspan":1},{"type":"xy","rowspan":1}]],
+
+
+ subplot_titles=('Daily Top '+ str(top_N) + ' Species in Date Range '+str(Date_Slider[0])+' to '+str(Date_Slider[1])+'',
+ 'Daily ' + specie+ ' Detections on 15 minute intervals '),
# 'Total Detect:'+str('{:,}'.format(df_counts))+
# ' Confidence Max:'+str('{:.2f}%'.format(max(df2[df2['Com_Name']==specie]['Confidence'])*100))+
# ' '+' Median:'+str('{:.2f}%'.format(np.median(df2[df2['Com_Name']==specie]['Confidence'])*100))
# )
)
+
+ fig.add_trace(go.Bar(y=top_N_species.index, x=top_N_species, orientation='h'), row=1,col=1)
df4=df2['Com_Name'][df2['Com_Name']==specie].resample('15min').count()
df4.index=[df4.index.date, df4.index.time]
day_hour_freq=df4.unstack().fillna(0)
@@ -208,11 +213,13 @@ else:
fig_y = [h.strftime('%H:%M') for h in day_hour_freq.columns.tolist()]
fig_z = day_hour_freq.values.transpose()
fig_heatmap = go.Figure(data=go.Heatmap(x=fig_x,y=fig_y,z=fig_z))
- fig.add_trace(go.Bar(y=top_N_species.index, x=top_N_species, orientation='h'), row=1,col=1)
+
fig.update_layout(
margin=dict(l=0, r=0, t=50, b=0),
yaxis={'categoryorder':'total ascending'})
- fig.add_trace(go.Heatmap(x=fig_x,y=fig_y,z=fig_z, autocolorscale = False, colorscale = 'blackbody'), row=1, col=2)
+ color_pals= px.colors.named_colorscales()
+ selected_pal = cols2.selectbox('Select Color Pallet for Daily Detections', color_pals)
+ fig.add_trace(go.Heatmap(x=fig_x,y=fig_y,z=fig_z, autocolorscale = False, colorscale = selected_pal), row=1, col=2)
# container=st.container()
# config={'displayModelBar': False}
st.plotly_chart(fig, use_container_width=True) #, config=config)