Skip to content
Snippets Groups Projects
Commit 815010f9 authored by Adriaens, Ines's avatar Adriaens, Ines :v_tone2:
Browse files

start summary behaviour over day

parent ce864035
No related branches found
No related tags found
No related merge requests found
File added
......@@ -11,11 +11,13 @@ os.chdir(r"C:\Users\adria036\OneDrive - Wageningen University & Research\iAdriae
#%% import modules
from datetime import date, timedelta,datetime
from datetime import date, datetime
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
import seaborn as sns
from heatmap_visualisation import heatmap_barn
#%matplotlib qt
#%% set paths and constants and load data
......@@ -165,12 +167,12 @@ for cow in cows:
plt.close()
# summarize variables
data[["xnew","X","ynew","y"]].describe()
data[""]
test = data.loc[(data["ynew"] < -17) & (data["ynew"] > -19) & (data["cowid"] = cow),:]
sns.scatterplot(data=test, x = test.index.values, y = "ynew")
sns.scatterplot(data=test, x = test.index.values, y = "y")
# # summarize variables
# data[["xnew","X","ynew","y"]].describe()
# data[""]
# test = data.loc[(data["ynew"] < -17) & (data["ynew"] > -19) & (data["cowid"] = cow),:]
# sns.scatterplot(data=test, x = test.index.values, y = "ynew")
# sns.scatterplot(data=test, x = test.index.values, y = "y")
......@@ -183,13 +185,11 @@ sns.scatterplot(data=test, x = test.index.values, y = "y")
- explore gaps and gapsize
"""
#gapsize
#-------------------------------gapsize----------------------------------------
subset = data.loc[data["X"].isna(),["cowid","barn","date","t"]]
sumdata = subset.groupby(by = ["cowid","barn","date"]).count()
subset = data.loc[data["xnew"].isna(),["cowid","barn","date","t"]]
test = subset.groupby(by = ["cowid","barn","date"]).count()
sumdata["xnew"] = test["t"]
sumdata["gapperc"] = sumdata["t"]/864
......@@ -209,10 +209,173 @@ ax = sns.scatterplot(data=sumdata,x = "xlabel", y = "gap180s",
palette = "tab10", hue = "cowid",
style = "date", legend = False)
plt.savefig(svpath + "\\gap_imputed.png")
# average gap
#------------------------------behaviour over 24h------------------------------
#sns.set_style("darkgrid") # whitegrid, dark, white, ticks
cows = data["cowid"].drop_duplicates().reset_index(drop=1)
for cow in cows:
print(cow)
days = data.loc[(data["cowid"]==cow),["date"]].drop_duplicates()
days = days.sort_values(by = ["date"]).reset_index(drop=1)
for dd in days["date"]:
print(dd)
subset = data.loc[(data["cowid"]==cow) & \
(data["date"]==dd),:].copy()
palette = {"walking" : "darkorange",
"concentrate " : "tan",
"cubicle_A" : "darkorchid",
"cubicle_B" : "violet",
"cubicle_C" : "palevioletred",
"feed_rack" : "crimson",
"drink_trough" : "gold",
"slatted" : "limegreen",
"resting" : "darkorchid",
"waiting_area" : "mediumseagreen",
"unknown" : "royalblue"}
fig,ax = plt.subplots(1,1,figsize = (18,7))
sns.scatterplot(data=subset,x="t",y="zone",
hue="area",
marker = "s", linewidth = 0,
palette = palette,
legend = False)
sns.lineplot(data=subset, x='t',y = 'zone',
linewidth = 0.2, color = 'k')
ax.set_yticks(range(9))
ax.set_yticklabels(["walking","cubicles","feed rack","drink trough",
"concentrate feeder","slatted (b62)","resting (b62)",
"waiting area","unknown"])
sns.set_style("ticks")
ax.set_xticks([0,14400,28800,43200,57600,72000,86400])
ax.set_xticklabels(['00:00','04:00','08:00','12:00','16:00','20:00','24:00'])
ax.set_xlabel("time [h]")
ax.set_title("cow = " + str(cow) + ', date = ' + str(dd))
ax.set_xlim([-1000,87400])
plt.savefig(svpath+"\\timebudget_cow_" + str(cow) + "_" + str(dd).replace("-","") + ".png")
plt.close()
# ------------------------- individual cow heatmaps ---------------------------
cows = data["cowid"].drop_duplicates().reset_index(drop=1)
#barn limits
barn = {"60":[64.8,75.6],
"61":[54,64.8],
"62":[32.4,54],
"70":[21.6,32.4],
"71":[10.8,21.6],
"72":[0,10.8],
"73":[-10.8,0],
}
# plots per cow-day
for cow in cows["cowid"]:
# unique days
days = data.loc[(data["cowid"]==cow),["date"]].drop_duplicates()
days = days.sort_values(by = ["date"]).reset_index(drop=1)
# select data and create heatmaps
for dd in days["date"]:
print(cow, dd)
# select data
data_x = data.loc[(data["cowid"] == cow) &
(data["date"] == dd),"X"]
data_y = data.loc[(data["cowid"] == cow) &
(data["date"] == dd),"y"]
# set limits (based on information barn)
barnnr = int(data.loc[(data["cowid"] == cow) &
(data["date"] == dd),"barn"].mean())
x_lim = barn[str(barnnr)]
y_lim = [-18,0]
# plot heatmap
# matplotlib.rcdefaults()
fig, ax = plt.subplots()
ax = heatmap_barn(data_x, data_y, 0.1, 0.1, x_lim, y_lim)
ax.set_xlabel('y coordinate')
ax.set_ylabel('x coordinate')
ax.set_title("barn = " +str(barnnr) + ', cow = ' + str(cow) + \
", date = " + datetime.strftime(dd,"%Y-%m-%d").replace("-",""))
ax.xaxis.tick_top()
plt.savefig(svpath + "//heatmap_" + str(cow) + "_" + str(dd).replace("-",""))
plt.close()
#------------------combine heatmap with budget-area over time------------------
#barn limits
barn = {"60":[64.8,75.6],
"61":[54,64.8],
"62":[32.4,54],
"70":[21.6,32.4],
"71":[10.8,21.6],
"72":[0,10.8],
"73":[-10.8,0],
}
palette = {"walking" : "darkorange",
"concentrate " : "tan",
"cubicle_A" : "darkorchid",
"cubicle_B" : "violet",
"cubicle_C" : "palevioletred",
"feed_rack" : "crimson",
"drink_trough" : "gold",
"slatted" : "limegreen",
"resting" : "darkorchid",
"waiting_area" : "mediumseagreen",
"unknown" : "royalblue"}
cows = data["cowid"].drop_duplicates().reset_index(drop=1)
for cow in cows:
print(cow)
days = data.loc[(data["cowid"]==cow),["date"]].drop_duplicates()
days = days.sort_values(by = ["date"]).reset_index(drop=1)
for dd in days["date"]:
print(dd)
subset = data.loc[(data["cowid"]==cow) & \
(data["date"]==dd),:].copy()
fig, ax = plt.subplots(1, 2, gridspec_kw={'width_ratios': [3, 1.5]}, figsize = (22,7))
# plot scatter + line
sns.scatterplot(data=subset,x="t",y="zone",
hue="area",
marker = "s", linewidth = 0,
palette = palette,
legend = False,
ax = ax[0])
sns.lineplot(data=subset, x='t',y = 'zone',
linewidth = 0.2, color = 'k', ax = ax[0])
ax[0].set_yticks(range(9))
ax[0].set_yticklabels(["walking","cubicles","feed rack","drink trough",
"concentrate feeder","slatted (b62)","resting (b62)",
"waiting area","unknown"])
sns.set_style("ticks")
ax[0].set_xticks([0,14400,28800,43200,57600,72000,86400])
ax[0].set_xticklabels(['00:00','04:00','08:00','12:00','16:00','20:00','24:00'])
ax[0].set_xlabel("time [h]")
ax[0].set_title("cow = " + str(cow) + ', date = ' + str(dd))
ax[0].set_xlim([-1000,87400])
# set limits (based on information barn)
barnnr = int(data.loc[(data["cowid"] == cow) &
(data["date"] == dd),"barn"].mean())
x_lim = barn[str(barnnr)]
y_lim = [-18,0]
# plot heatmap
ax[1] = heatmap_barn(subset["xnew"], subset["ynew"], 0.1, 0.1, x_lim, y_lim)
ax[1].set_xlabel('y coordinate')
ax[1].set_ylabel('x coordinate')
ax[1].set_title("barn = " +str(barnnr) + ', cow = ' + str(cow) + \
", date = " + str(dd))
ax[1].xaxis.tick_top()
ax[1].yaxis.tick_right()
ax[1].yaxis.set_label_position("right")
plt.savefig(svpath+"\\spatial_cow_" + str(cow) + "_" + str(dd).replace("-","") + ".png")
plt.close()
\ No newline at end of file
......@@ -12,7 +12,8 @@ import numpy as np
# from read_data_sewio import start_end_dates, read_all_data, read_ids, combine_data_id
import os
import seaborn as sns
import matplotlib as plt
import matplotlib
import matplotlib.pyplot as plt
# path_out
......@@ -113,11 +114,15 @@ def heatmap_barn(data_x,data_y,xstep,ystep,x_lim,y_lim):
ax = sns.heatmap(df,
yticklabels = round(1/xstep),
xticklabels = round(1/ystep*2),
robust = True
robust = True,
cbar = False
)
return ax
"""
#%% usage
# ------------------------- individual cow heatmaps ---------------------------
# unique cows
......@@ -163,14 +168,14 @@ for cow in cows["cowid"]:
y_lim = [-18,0] #[data_y.min(),data_y.max()]
# plot heatmap
plt.rcdefaults()
fig, ax = plt.pyplot.subplots()
matplotlib.rcdefaults()
fig, ax = plt.subplots()
ax = heatmap_barn(data_x, data_y, xstep, ystep, x_lim, y_lim)
ax.set_xlabel('y coordinate')
ax.set_ylabel('x coordinate')
ax.set_title("barn = " +str(barnnr) + ', cow = ' + str(cow) + ", date = " + datetime.strftime(dd,"%Y-%m-%d").replace("-",""))
ax.xaxis.tick_top()
plt.pyplot.savefig(path_out + "//heatmap_" + str(cow) + "_" + datetime.strftime(dd,"%Y-%m-%d").replace("-",""))
plt.pyplot.close()
plt.savefig(path_out + "//heatmap_" + str(cow) + "_" + datetime.strftime(dd,"%Y-%m-%d").replace("-",""))
plt.close()
"""
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment