Skip to contents
๐Ÿ“ฆ Data: FAO Global Capture Production, release 2026.1.0 (published by FAO on 2026-03-30; catches 1950โ€“2024), downloaded from Capture_2026.1.0.zip. Licence CC BY 4.0. fao_data_info() shows the release you use and how to cite it.

faofishingreport turns the FAO Global Capture Production statistics into charts, maps and tables for reports. This page walks through a complete first analysis of the Northeast Atlantic (FAO major fishing area 27); every chart below was produced by the code shown above it.

A typical workflow:

Step What you do Functions
1. Data Check for and download the latest FAO release; see which release you use check_fao_update(), download_fao_data(), fao_data_info()
2. Fishing area Total catch, main species and main countries of an area fishing_area_data(), fishing_area_species(), fishing_area_country()
3. Species and countries Who catches a species, what a country catches species_country(), country_species(), country_analysis()
4. Summaries Composition, stock status, trends, data quality, diversity, fleets species_group_composition(), stock_status(), peak_trend(), data_quality(), coastal_distant(), โ€ฆ
5. Methods from the literature Catch shocks, collapses, synchrony, pelagic/demersal ratio, mean temperature of the catch catch_shocks(), collapse_analysis(), catch_synchrony(), pelagic_demersal(), mean_temperature_catch()
6. Stock assessment CMSY++ for the main species cmsy_setup(), cmsy_area()
7. Report A Word report of an area in one call fao_report()
8. Style Language, theme, colours, map projection fao_settings()

๐Ÿ“ฆ Installation

faofishingreport needs R 4.2 or later. Install it from GitHub:

install.packages("remotes")
remotes::install_github("Linbojun99/faofishingreport", dependencies = TRUE)

With dependencies = TRUE every package that the analyses use is installed with it: dplyr, ggplot2 and sf for the charts and maps, rnaturalearth for the world maps, officer and xml2 for Word reports, eoffice for editable PowerPoint charts, nanoparquet for the FishBase and SeaLifeBase tables, ncdf4 for sea surface temperature files, and the R packages of CMSY++ (coda, conicfit, gplots, MASS, mvtnorm, neuralnet, โ€ฆ). The only exceptions are rjags and R2jags, which need the separate JAGS program: cmsy_setup() installs JAGS and both packages the first time you use CMSY++ (see ๐Ÿ“‰ CMSY++ stock assessment).

Windows and macOS use binary packages, so no compiler (Rtools) is needed. On macOS, editable PowerPoint charts also need XQuartz. Linux needs the system libraries of the sf package and, for Chinese charts, a Chinese font:

sudo apt-get install libgdal-dev libgeos-dev libproj-dev libudunits2-dev fonts-noto-cjk

Load the package. The start-up message shows the operating system and the font chosen for charts (SimSun on Windows, Songti SC on macOS, Noto Serif CJK SC on Linux):

library(faofishingreport)
#> faofishingreport: Windows, chart font "SimSun" (change it with fao_font())

๐Ÿ’พ Get the latest FAO data

The package comes with FAO release 2026.1.0. FAO publishes a new release about once a year. Check whether a newer one exists and download it (about 5 MB, a few seconds):

check_fao_update()
#> FAO Global Capture Production
#>   Latest online release: 2026.1.0 (published 2026-03-30)
#>   Bundled with package:  2026.1.0
#>   Downloaded locally:    none
#>   Your data is up to date.

download_fao_data()   # only needed when a newer release is available

All functions automatically use the newest data available. fao_data_info() tells which release that is, where it comes from and how to cite it. See ๐Ÿ’พ FAO data for all the arguments of these functions, choosing releases, the data format and working with your own subsets.

๐Ÿ“ Where the results go

Each analysis saves its charts and tables in the current working folder:

Folder Content
figures/png/ Charts as PNG (always); the summary analyses use figures/png/summary/
figures/pptx/ Charts as editable PowerPoint files (with pptx = TRUE; uses the eoffice package)
tables/ Tables as CSV, readable by Excel including Chinese names
reports/ Word reports of fao_report()

So start by choosing a folder for the report:

setwd("D:/reports/FAO27")   # any folder

๐ŸŒŠ First analysis: FAO area 27

fishing_area_data() extracts the catch of one FAO major fishing area and draws its total catch with the breakpoints of the mean catch, its share of the world catch of all marine areas, and a world map of the countries fishing there.

FAO27 <- fishing_area_data("Atlantic, Northeast")
fishing_trend.png
fishing_percentage.png
area_country_map.png

The result is a list with the catch records of the area (area_data), the periods between breakpoints (coefs_data) and the map data (act_world_map). FAO27$area_data is the input of most other functions:

show_table(FAO27$area_data, n = 5)
Country..Name. ASFIS.species..Name. FAO.major.fishing.area..Name. Unit..Name. Unit Year Production Production.Type
51634 Belgium European eel Atlantic, Northeast Tonnes - live weight TLW, Number 2018 1.0 actual
51635 Belgium European eel Atlantic, Northeast Tonnes - live weight TLW, Number 2019 1.0 actual
51636 Belgium European eel Atlantic, Northeast Tonnes - live weight TLW, Number 2020 0.7 actual
51637 Belgium European eel Atlantic, Northeast Tonnes - live weight TLW, Number 2021 1.0 actual
51638 Belgium European eel Atlantic, Northeast Tonnes - live weight TLW, Number 2022 0.0 actual

Any other area works the same way. The names of the FAO major fishing areas are:

data <- load_fao_data()
sort(unique(data$FAO.major.fishing.area..Name.))
#>  [1] "Africa - Inland waters"           "America, North - Inland waters"  
#>  [3] "America, South - Inland waters"   "Arctic Sea"                      
#>  [5] "Asia - Inland waters"             "Atlantic, Antarctic"             
#>  [7] "Atlantic, Eastern Central"        "Atlantic, Northeast"             
#>  [9] "Atlantic, Northwest"              "Atlantic, Southeast"             
#> [11] "Atlantic, Southwest"              "Atlantic, Western Central"       
#> [13] "Europe - Inland waters"           "Former USSR area - Inland waters"
#> [15] "Indian Ocean, Antarctic"          "Indian Ocean, Eastern"           
#> [17] "Indian Ocean, Western"            "Mediterranean and Black Sea"     
#> [19] "Oceania - Inland waters"          "Pacific, Antarctic"              
#> [21] "Pacific, Eastern Central"         "Pacific, Northeast"              
#> [23] "Pacific, Northwest"               "Pacific, Southeast"              
#> [25] "Pacific, Southwest"               "Pacific, Western Central"

๐ŸŸ Main species and countries

The ten species with the largest catch in area 27, their catch over time and the breakpoints of their mean catch:

species <- fishing_area_species(FAO27$area_data, rank_range = 1:10)
area_species.png
area_species_wrap.png

The same for the countries:

countries <- fishing_area_country(FAO27$area_data, rank_range = 1:10)
area_country.png
area_country_wrap.png

rank_range lists the ranks shown: 1:10 the first ten, 11:20 the next ten, c(5, 6) the fifth and the sixth.

๐Ÿ–ฅ๏ธ What you see in the console

When a function finishes, it shows a short summary of its results in the console: what was analysed, the first rows of its main table, the charts and tables it saved, and the parts of the result it returns. The result itself is returned invisibly: assign it (species <- ...) to keep it. Here the fifth and the sixth species:

fao_settings(show_data = TRUE)   # the default (the articles of this site turn it off)
species56 <- fishing_area_species(FAO27$area_data, rank_range = c(5, 6))
#> 
#> โ”€โ”€ fishing_area_species(): Atlantic, Northeast โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
#> Ranks 5 to 6 of 1029 species items, by catch over all years (catch_t and share_pct: all years):
#>  rank                   species    catch_t share_pct
#>     5 Atlantic mackerel         44,615,940      6.19
#>     6 Sandeels(=Sandlances) nei 33,532,765      4.65
#> Charts saved in figures/png/area/: area_species.png, area_species_wrap.png
#> Tables saved in tables/: species_ranked_table.csv, species_coefs_data.csv
#> Results returned: $area_species, $area_species_ranked, $area_species_ranked_total, $coefs_data
fao_settings(show_data = FALSE)

plot_show = TRUE also draws each chart in the plot window (the Plots pane of RStudio) as it is saved; plot = TRUE keeps saving the chart files either way:

species <- fishing_area_species(FAO27$area_data, rank_range = 1:10, plot_show = TRUE)
fao_settings(plot_show = TRUE)    # every function of the session draws its charts
fao_settings(show_data = FALSE)   # no summaries in the console

๐ŸŒ Chinese and bilingual charts

Every analysis has a lang argument: "en" (English), "zh" (Chinese) or "both". Country, species and area names use the official FAO Chinese names.

species_country(FAO27$area_data, species_name = "Atlantic cod", lang = "both")
Atlantic_cod_country_ranked_wrap.png

To use Chinese everywhere, set it once with fao_settings(lang = "zh").

๐Ÿ“Š A first summary: stock status

stock_status() classifies each species by its catch relative to its peak catch (stock status plots, Kleisner et al.ย 2013):

status <- stock_status(FAO27$area_data)
Atlantic__Northeast_stock_status_stocks.png
Atlantic__Northeast_stock_status_catch.png

๐Ÿ“ A Word report in one call

fao_report() runs the analyses of an area and writes a Word report with cover, abstract, data sources and methods, results with charts and tables, conclusions, references and appendix tables. The area can be given by its name or its code:

fao_report(27, lang = "en")   # writes reports/FAO27_report_en.docx in the working folder

By default the report has the total catch and its stages, the main species and countries, the ISSCAAP groups, the stock status plots, the data quality, the diversity of the catch and the coastal and distant-water fleets. Catch shocks, collapses, synchrony, the pelagic/demersal ratio, the mean temperature of the catch, distant-water fleet profiles and CMSY++ can be switched on. See ๐Ÿ“ Assessment report: Word, LaTeX and PDF for all its settings.

โš™๏ธ Settings of the functions on this page

The arguments shared by the analyses:

Argument Meaning Default
lang Language of the chart text and names: "en", "zh" or "both" NULL: the language of fao_settings() ("en" unless changed)
plot Save the charts TRUE
table Save the tables in tables/ (not in fishing_area_data()) TRUE
pptx Also save the charts as editable PowerPoint files FALSE, or pptx of fao_settings()
plot_show Also draw each chart in the plot window (e.g.ย the Plots pane of RStudio) as it is saved FALSE, or plot_show of fao_settings()
ZH Older way of asking for Chinese: ZH = TRUE is lang = "zh" (only in the fishing area, species and country functions) FALSE
label Name used in the output files of the summary analyses, e.g.ย stock_status() NULL: the fishing area (or country) of the data

Every function has its own arguments as well; each article has a table of all of them:

Functions Main arguments All arguments
check_fao_update(), download_fao_data(), load_fao_data(), fao_data_info() version, data_dir, overwrite, quiet ๐Ÿ’พ FAO data
fishing_area_data() area_name, timeseries_analysis, data_version, colours and text sizes ๐ŸŒŠ Fishing area analysis
fishing_area_species(), fishing_area_country() rank_range, timeseries_analysis, h_value, line and text styles ๐ŸŒŠ Fishing area analysis
species_country() species_name, rank_range, h_value, map style ๐ŸŸ Species and countries
stock_status() taxon_levels, min_years, min_consecutive, min_catch, smooth ๐Ÿ“ˆ Composition, stock status and trends
fao_report() area, lang, file, sections switched on or off, settings of each analysis ๐Ÿ“ Assessment report: Word, LaTeX and PDF
fao_settings(), fao_font() lang, theme, palette, map_projection, dpi, โ€ฆ ๐ŸŽจ Customise charts and maps

๐Ÿงญ Next steps

๐Ÿ“– References

Bai, J. and Perron, P. (2003). Computation and analysis of multiple structural change models. Journal of Applied Econometrics 18(1): 1โ€“22. doi:10.1002/jae.659

CWP (Coordinating Working Party on Fishery Statistics). CWP Handbook of Fishery Statistics: Main water areas (FAO major fishing areas). Rome: FAO. https://www.fao.org/cwp-on-fishery-statistics/handbook/general-concepts/main-water-areas/en/

FAO (2026). FishStat: Global capture production 1950โ€“2024 (release 2026.1.0). In: FishStatJ. https://www.fao.org/fishery/statistics/software/fishstatj/en. Licence: CC-BY-4.0. Release file: https://www.fao.org/fishery/static/Data/Capture_2026.1.0.zip

FAO (2026). Fishery and Aquaculture Statistics โ€“ Yearbook 2024. FAO Yearbook of Fishery and Aquaculture Statistics. Rome: FAO. doi:10.4060/ce1217en

Kleisner, K., Zeller, D., Froese, R. and Pauly, D. (2013). Using global catch data for inferences on the worldโ€™s marine fisheries. Fish and Fisheries 14(3): 293โ€“311. doi:10.1111/j.1467-2979.2012.00469.x

Natural Earth. Free vector and raster map data at 1:10m, 1:50m and 1:110m scales. https://www.naturalearthdata.com/

Zeileis, A., Kleiber, C., Krรคmer, W. and Hornik, K. (2003). Testing and dating of structural changes in practice. Computational Statistics & Data Analysis 44(1โ€“2): 109โ€“123. doi:10.1016/S0167-9473(03)00030-6

Zeileis, A., Leisch, F., Hornik, K. and Kleiber, C. (2002). strucchange: an R package for testing for structural change in linear regression models. Journal of Statistical Software 7(2): 1โ€“38. doi:10.18637/jss.v007.i02