63 lines
2.0 KiB
Python
Executable File
63 lines
2.0 KiB
Python
Executable File
#!/home/pi/BirdNET-Pi/birdnet/bin/python3
|
|
import pandas as pd
|
|
import seaborn as sns
|
|
# import numpy as np
|
|
import matplotlib.pyplot as plt
|
|
from datetime import datetime
|
|
import textwrap
|
|
|
|
#Read database into Pandas dataframe
|
|
df = pd.read_csv('~/BirdNET-Pi/BirdDB.txt', sep=';')
|
|
|
|
#Convert Date and Time Fields to Panda's format
|
|
df['Date']=pd.to_datetime(df['Date'])
|
|
df['Time']=pd.to_datetime(df['Time'])
|
|
|
|
|
|
#Create separate dataframes for separate locations
|
|
df_clt=df[df.Lat == 35.0]
|
|
|
|
now = datetime.now()
|
|
df_clt_today = df_clt[df_clt['Date']==now.strftime("%d-%m-%y")]
|
|
|
|
#Get top 10 today
|
|
clt_top10_today=(df_clt_today['Com_Name'].value_counts()[:10])
|
|
df_clt_top10_today = df_clt_today[df_clt_today.Com_Name.isin(clt_top10_today.index)]
|
|
|
|
pal = "Greens"
|
|
|
|
#Set up plot axes and titles
|
|
plot=sns.countplot(y='Com_Name', data = df_clt_top10_today, order = pd.value_counts(df_clt_top10_today['Com_Name']).iloc[:10].index)
|
|
plot.set_yticklabels(['\n'.join(textwrap.wrap(ticklabel.get_text(),15)) for ticklabel in plot.get_yticklabels()])
|
|
plot.set_title('Top 10 Today --'+ str(now.strftime(" Last updated %B %d, %Y %I:%M%P")))
|
|
plot.set_xlabel("Detections", fontsize = 12)
|
|
plot.set_ylabel("", fontsize = 12)
|
|
plt.tight_layout()
|
|
|
|
#Save plot
|
|
savename='/home/pi/BirdSongs/Extracted/Top_10_Today-'+str(now.strftime("%d-%m-%Y"))+'.png'
|
|
plt.savefig(savename)
|
|
plt.clf()
|
|
|
|
#Generate heatmap plot
|
|
df_clt_top10_today['Hour'] = [r.hour for r in df_clt_top10_today.Time]
|
|
heat = pd.crosstab(df_clt_top10_today['Com_Name'],df_clt_top10_today['Hour'])
|
|
|
|
|
|
|
|
plot = sns.heatmap(heat, annot=True, annot_kws={"fontsize":7}, cmap = "gray_r", square = False, cbar=False, linewidths = 0)
|
|
plot.set_yticklabels(['\n'.join(textwrap.wrap(ticklabel.get_text(),15)) for ticklabel in plot.get_yticklabels()])
|
|
plot.set_title('Phenology --'+ str(now.strftime(" Last updated %B %d, %Y %I:%M%P")))
|
|
plot.set_xlabel("Hour (24h)", fontsize = 12)
|
|
plot.set_ylabel("", fontsize = 12)
|
|
plt.tight_layout()
|
|
|
|
#Save plot
|
|
savename='/home/pi/BirdSongs/Extracted/When_today-'+str(now.strftime("%d-%m-%Y"))+'.png'
|
|
plt.savefig(savename)
|
|
|
|
plt.clf()
|
|
|
|
|
|
|