Short visual on vectorized movements of small fish school

My research is currently centred around understanding the role of consistent behavioural differences in the collective movements and functioning of animal groups. In particular, I assay large numbers of stickleback fish on various personality traits and expose them in groups to different ecological scenario’s. I have written custom tracking software in Python using the OpenCV library to be able to accurately track the position of individual fish in the freely-moving schools.

Today I wanted to share a simple visual that highlights the detailed individual-based tracking of a small fish school over time. Each fish is represented by a different colour, with the arrow showing its vectorized movement, with larger arrows indicating a higher speed. The video is centred around the vector of the group as a whole to better visualize the structure of the group over time. Lines indicate the smallest polygon encompassing all individuals and Individual Centre Distances. The moving axes indicate the relative speed of the group in a large circular arena.

In this short section of a 30-min long experimental trial it is clear that the group speed, cohesion, and structure fluctuate over time. At the same time, individuals also maintain to some extent their positions relative to the group centre, such as the green and yellow individual clearly having a stronger pulling power on the movements of the group as a whole.

I used RaspberryPi computers to film the fish, custom Python tracking scripts to acquire individual X,Y coordinates for each individual in the group, R to process the tracking data and acquire movement characteristics, and R with ffmpeg to create the visual.

How to create an interactive scientific plot online

In my previous post I showed a fully interactive online graph of one of the plots in my recent paper on leadership in sticklebacks. In this follow-up post I will explain how to easily create such an interactive plot yourself. To be able to do this you will need some experience with the R-language and ideally with ggplot2.

First create an account at plot.ly, which is free. After you have created your account, go to “settings” and click on “generate API key”. You will need your username and this key to link your account to R.

Now you have your account ready start-up R and set-up the R workspace:

Read further…