line_tracking_of_fish_movement/params.py

135 lines
4.6 KiB
Python

import matplotlib.colors as mcolors
import matplotlib as mpl
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
import datetime
import numpy as np
from IPython import embed
#############################################################################################
# default fontsize
plt.rcParams['font.size'] = 11
plt.rcParams['axes.linewidth'] = 2
#############################################################################################
# for boxplots
props = dict(linewidth=2, color='black')
props_a = dict(linewidth=2, color='#884ea0')
props_e = dict(linewidth=2, color='#656565')
flierprops = dict(marker='o', markeredgecolor='#656565', markersize=6, linestyle='none')
#############################################################################################
# time boundaries of day, dusk, night and dawn
time_bound = ['1900_01_01_6_30', '1900_01_01_16_30', '1900_01_01_18_30',
'1900_01_02_4_30', '1900_01_02_6_30', '1900_01_02_16_30']
time_boxes = []
for i in range(len(time_bound)):
time_boxes.append(datetime.datetime.strptime(time_bound[i], '%Y_%m_%d_%H_%M'))
datetime_box = mdates.date2num(time_boxes)
# bin length for activity calculations in second
bin_len = 5
#############################################################################################
# colors
color_efm = ['#2e4053', '#ab1717', '#004d8d', '#000000']
color_diffdays = ['#1b2631', '#2e4053', '#5d6d7e', '#aeb6bf']
cd = ['#566573', '#2c3e50', '#abb2b9', '#2471a3', '#1a5276', '#a9cce3']
cm20c = plt.cm.get_cmap('tab20c')
color2 = ['#f39c12', '#d35400', '#fad7a0', '#e59866', '#c0392b', '#d98880', '#f1c40f']
color_dadunida = ['#DFD13A', '#c0392b', '#62285B', '#CE7227']
farben = list(mcolors.CSS4_COLORS)
color_vec = []
for i in range(len(farben)):
color_vec.append(mcolors.CSS4_COLORS[farben[i]])
color_vec = sorted(color_vec)
#############################################################################################
# labels
labels = ['$\it{Eigenmannia\,sp.}$', '$\it{A.\,macrostomus}\,\u2640$', '$\it{A.\,macrostomus}\,\u2642$', 'unknown']
#############################################################################################
# plot params
fs = 11 # font_size
fs_ticks = 11 # fs_ticks
lw = 2 # linewidth
a = 0.3 # alpha
ms = 7
h_bins = 30 # hist_bins
save_path = '../../thesis/Figures/Results/'
save_path_pres = '../../pres_ergebnisse/figures/'
inch = 2.45
#############################################################################################
# for nice plots
def nice_ax(ax):
'''
Makes nice x and y axis:
top and right axis invisible and axis width = 2 and axis ticks labelsize = 11
:param ax:
:return:
'''
ax.spines["top"].set_visible(False)
ax.spines["right"].set_visible(False)
ax.tick_params(width=2)
ax.tick_params(axis='both', which='major', labelsize=11)
mpl.axes.Axes.make_nice_ax = nice_ax
def beau_time_channel_axis(ax):
'''
Makes nice axis for trajectory plots:
top and right axis invisible and axis width = 2 and axis ticks labelsize = 11
white line for the gap: y = 7.5
y ticks and yticklabels: ticks at each electrode, labels at every second
x and y labels
:param ax:
:return:
'''
ax.spines["top"].set_visible(False)
ax.spines["right"].set_visible(False)
ax.tick_params(width=2)
ax.tick_params(axis='both', which='major', labelsize=11)
# ax.set_ylim([0, 15])
ax.axhline(7.5, xmin=0, xmax=15, color='white', lw=4)
# ax.set_yticklabels([1, 3, 5, 7, 14, 16, 18, 20])
ax.set_yticks([0, 1, 2, 3, 4, 5, 6, 7, 7.5, 8, 9, 10, 11, 12, 13, 14, 15])
ax.set_yticklabels(['1', '', '3', '', '5', '', '7', '', 'gap', '', '10', '', '12', '', '14', '', '16'])
# ax.set_yticklabels([0, 0, 2, 4, 6, 13, 15, 17, 19])
ax.invert_yaxis()
ax.set_xlabel('Time', fontsize=11)
ax.set_ylabel('Electrode', fontsize=11)
mpl.axes.Axes.beautimechannelaxis = beau_time_channel_axis
def timeaxis(ax):
'''
Makes nice time axis for datetime x values:
top and right axis invisible and axis width = 2 and axis ticks labelsize = 11
converts the x ticks in the date format into a real time axis of the form H:M
:param ax:
:return:
'''
ax.spines["top"].set_visible(False)
ax.spines["right"].set_visible(False)
ax.tick_params(width=2)
ax.tick_params(axis='both', which='major', labelsize=11)
ax.xaxis_date()
date_format = mdates.DateFormatter('%H:%M')
# date_format = mdates.DateFormatter('%d.%m.%Y %H:%M')
ax.xaxis.set_major_formatter(date_format)
mpl.axes.Axes.timeaxis = timeaxis