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.

These functions take the fishing area data of fishing_area_data() (here area 27) and look at one species or one country. country_analysis() looks at a country in all FAO areas.

FAO27 <- fishing_area_data("Atlantic, Northeast")

1️⃣ species_country(): who catches a species

Names must match the FAO species names exactly; the main species of an area are a good start:

top <- aggregate(Production ~ ASFIS.species..Name., data = FAO27$area_data, FUN = sum)
head(top[order(-top$Production), "ASFIS.species..Name."], 10)
#>  [1] "Atlantic herring"          "Atlantic cod"             
#>  [3] "Capelin"                   "Blue whiting(=Poutassou)" 
#>  [5] "Atlantic mackerel"         "Sandeels(=Sandlances) nei"
#>  [7] "European sprat"            "Saithe(=Pollock)"         
#>  [9] "Haddock"                   "Norway pout"
cod <- species_country(FAO27$area_data, species_name = "Atlantic cod")
Atlantic_cod_country_map.png
Atlantic_cod_country_ranked_total.png
Atlantic_cod_country_ranked.png
Atlantic_cod_country_ranked_wrap.png
Atlantic_cod_country_pie_selected.png

In the file names, <species> is the species name with spaces and punctuation replaced by _ (e.g. Atlantic_cod):

File Chart
<species>_country_map.png Catch of the species by country over all years, on a world map
species/<species>_country_ranked_total.png Total catch and share of the selected countries (by default the ten main ones)
species/<species>_country_ranked.png Their catch over time
species/<species>_country_ranked_wrap.png One panel per country, with its share, a linear trend and the breakpoints of its mean catch (with timeseries_analysis = FALSE, a smooth curve)
species/<species>_country_pie_selected.png Shares of the main countries in each decade and in each year of the current decade (up to four countries, the others are grouped)

The table tables/<species>_country_ranked_table.csv has the average catch per decade, the catch in the last five years and the share of each country in the last year:

table <- read.csv("tables/Atlantic_cod_country_ranked_table.csv",
                  fileEncoding = "UTF-8-BOM", check.names = FALSE)
show_table(table, n = 10, digits = 0)
Country..Name. 1950s 1960s 1970s 1980s 1990s 2000s 2010s 2020s 2020 2021 2022 2023 2024 total_2024_production percentage_of_total_2024
Denmark 49,390 78,840 138,487 165,392 73,986 33,334 22,034 5,230 6,996 4,448 3,654 5,440 5,610 5,610 1
Faroe Islands 50,750 20,140 38,589 51,879 36,275 38,108 34,271 29,977 34,510 29,453 28,542 29,504 27,875 27,875 4
France 43,990 32,530 50,235 31,332 18,433 8,751 10,046 5,288 6,659 4,710 4,995 4,601 5,474 5,474 1
Germany 121,200 89,570 103,867 57,171 28,332 17,077 15,114 9,676 11,507 9,187 9,900 9,085 8,699 8,699 1
Iceland 265,890 246,870 282,864 365,598 250,113 205,186 235,340 247,559 278,442 272,045 243,991 221,009 222,309 222,309 29
Norway 240,370 255,160 383,889 277,006 285,810 222,616 387,177 313,285 330,767 381,594 353,966 293,408 206,691 206,691 27
Poland 48,440 53,090 66,401 71,149 24,222 16,289 14,938 1,069 1,800 3,164 129 148 104 104 0
Russian Federation NA NA NA NA 214,118 196,751 364,080 300,680 314,422 353,303 334,655 277,721 223,297 223,297 29
Un. Sov. Soc. Rep. 382,090 407,780 341,246 170,941 21,676 NA NA NA NA NA NA NA NA NA NA
United Kingdom 427,430 358,120 275,555 112,584 69,885 25,002 29,324 18,373 24,762 13,001 15,645 19,051 19,404 19,404 3

With timeseries_analysis = TRUE the function returns a list of two data frames: the catch of the selected countries by year (cod[[1]]) and their breakpoints (cod[[2]]: start year, end year and mean catch of each period); with timeseries_analysis = FALSE, only the first.

Options

Argument Meaning Default
area_data Catch data of an area: fishing_area_data()$area_data or any subset of load_fao_data()
species_name FAO species name (ASFIS English name, as in the data)
rank_range Ranks of the countries shown, by total catch of the species over all years: 1:10 the ten largest, c(5, 6) the fifth and the sixth 1:10
plot Save the charts TRUE
table Save the table in tables/ TRUE
timeseries_analysis TRUE: panel chart with linear trend and breakpoints; FALSE: panel chart with a smooth (loess) curve TRUE
h_value Minimum length of a period between breakpoints: a fraction of the series or a number of years 0.15
polygon_color Colour of the country borders on the map "grey90"
fill_scale Palette of the map, any choice of map_palette in fao_settings() NULL: map_palette of fao_settings() ("deep-orange")
axis_title_face Font face of the axis titles of the map "bold"
axis_title_size_map Size of the axis titles of the map 14
axis_text_size_map Size of the axis labels of the map 12
legend_text_size_map Size of the legend text of the map 12
axis_text_size, axis_title_size Size of the axis labels and titles of the other charts 10, 12
strip_text_size, strip_text_face Size and font face of the panel titles 12, "bold"
ZH Older way of asking for Chinese: TRUE is lang = "zh" FALSE
lang Language of the chart text and names: "en", "zh" or "both" NULL: "zh" if ZH = TRUE, else the language of fao_settings()
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()

In the current version the ranking, time series, panel and pie charts of species_country() use fixed text sizes: axis_text_size, axis_title_size, strip_text_size and strip_text_face are accepted but do not change them. The map arguments do.

Tuna series are short in some countries; a larger h_value gives clearer breakpoints:

species_country(FAO27$area_data, species_name = "Atlantic bluefin tuna", h_value = 5, lang = "zh")
Atlantic_bluefin_tuna_country_ranked_wrap.png

2️⃣ country_species(): what a country catches in the area

norway <- country_species(FAO27$area_data, country_name = "Norway")
Norway_species_ranked_total.png
Norway_species_ranked.png
Norway_species_ranked_wrap.png
Norway_species_pie_selected.png

In the file names, <country> is the country name with spaces and punctuation replaced by _:

File Chart
country/<country>_species_ranked_total.png Total catch and share of the country’s selected species (by default the ten main ones)
country/<country>_species_ranked.png Their catch over time
country/<country>_species_ranked_wrap.png One panel per species, with share, trend and breakpoints
country/<country>_species_pie_selected.png Species shares in each decade and in each year of the current decade
tables/<country>_country_ranked_table.csv Average catch per decade, catch in the last five years and share in the last year of each species

It returns the catch of the selected species by year.

time_analysis_text_displacement moves the share labels in the panel chart (years after the first year with catch), useful when they overlap the lines:

country_species(FAO27$area_data, country_name = "Spain", h_value = 5,
                time_analysis_text_displacement = 6, lang = "both")
Spain_species_ranked_wrap.png
Argument Meaning Default
area_data Catch data of an area: fishing_area_data()$area_data or any subset of load_fao_data()
country_name FAO country name, as in the data
rank_range Ranks of the species shown, by the country’s total catch over all years: 1:10 the ten largest, c(5, 6) the fifth and the sixth 1:10
plot Save the charts TRUE
table Save the table in tables/ TRUE
timeseries_analysis TRUE: panel chart with linear trend and breakpoints; FALSE: panel chart with a smooth (loess) curve TRUE
time_analysis_text_displacement Position of the share labels in the panel chart: number of years after the first year with catch 10
h_value Minimum length of a period between breakpoints: a fraction of the series or a number of years 0.15
ZH Older way of asking for Chinese: TRUE is lang = "zh" FALSE
lang Language of the chart text and names: "en", "zh" or "both" NULL: "zh" if ZH = TRUE, else the language of fao_settings()
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()

3️⃣ country_analysis(): a country in all FAO areas

country_analysis() uses the catch of a country in all FAO areas, so it takes the country name only:

norway_global <- country_analysis(country_name = "Norway")
Norwayanalysis_species_ranked_total.png
Norwayanalysis_species_ranked.png
Norwayanalysis_species_ranked_wrap.png
Norwayanalysis_species_pie_selected.png
Norwayfishing_area_map.png
Norwayanalysis_species_by_area.png
Norwayanalysis_area_total_production.png
Norwayyearly_area_production.png
Norwayyearly_area_production_wrap.png

Besides the species charts (as in country_species(), file names <country>analysis_...), it saves:

File Chart
country/<country>fishing_area_map.png The country’s total catch in each FAO area, on a map of the FAO areas; the country in red
country/<country>analysis_species_by_area.png Catch of the main species, split by fishing area, with the share of each area in the species’ catch
country/<country>analysis_area_total_production.png Total catch and share by fishing area
country/<country>yearly_area_production.png Catch in each area over time
country/<country>yearly_area_production_wrap.png One panel per area
tables/<country>analysis_country_ranked_table.csv Average catch per decade, catch in the last five years and share in the last year of each species

It returns the data behind the charts:

names(norway_global)
#> [1] "country_species_ranked"            "country_species_ranked_coefs_data"
#> [3] "table"                             "country_species_area_total"       
#> [5] "country_yearly_area_production"
show_table(norway_global$country_species_area_total, n = 8, digits = 1)
ASFIS.species..Name. FAO.major.fishing.area..Name. area_species_production total_species_production percentage_of_total
Atlantic herring Atlantic, Northeast 41,904,457.7 41,904,458 100.0
Capelin Atlantic, Northeast 30,995,470.2 31,182,216 99.4
Capelin Atlantic, Northwest 186,746.0 31,182,216 0.6
Atlantic cod Atlantic, Northeast 22,086,713.3 23,039,382 95.9
Atlantic cod Atlantic, Northwest 952,668.4 23,039,382 4.1
Blue whiting(=Poutassou) Atlantic, Northeast 16,072,409.4 16,072,409 100.0
Atlantic mackerel Atlantic, Northeast 13,148,795.6 13,148,796 100.0
Saithe(=Pollock) Atlantic, Northeast 12,242,719.4 12,242,806 100.0
Element Content
country_species_ranked Catch of the selected species by year
country_species_ranked_coefs_data Their breakpoints
table The table saved in tables/
country_species_area_total Catch of the selected species in each area, and the share of each area in the species’ catch
country_yearly_area_production Catch in each area by year, and its share of the country’s catch that year
Argument Meaning Default
country_name FAO country name, as in the data
rank_range Ranks of the species shown, by the country’s total catch over all years: 1:10 the ten largest, c(5, 6) the fifth and the sixth 1:10
plot Save the charts TRUE
table Save the table in tables/ TRUE
timeseries_analysis TRUE: species panel chart with linear trend and breakpoints; FALSE: with a smooth curve TRUE
time_analysis_text_displacement Position of the share labels in the panel chart: number of years after the first year with catch 10
h_value Minimum length of a period between breakpoints: a fraction of the series or a number of years 0.15
ZH Older way of asking for Chinese: TRUE is lang = "zh" FALSE
fill_scale Palette of the fishing area map, any choice of map_palette in fao_settings() NULL: map_palette of fao_settings()
lang Language of the chart text and names: "en", "zh" or "both" NULL: "zh" if ZH = TRUE, else the language of fao_settings()
data_version FAO release: "latest", "bundled" or a release such as "2026.1.0" (see 💾 FAO data) "latest"
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()

The breakpoints are found as described in 🌊 Fishing area analysis (strucchange::breakpoints() with a constant mean in each period).

Country names follow FAO: e.g. "Korea, Republic of", "Russian Federation", "Taiwan Province of China". Find them with grep("Korea", unique(load_fao_data()$Country..Name.), value = TRUE).

📖 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

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. ASFIS List of Species for Fishery Statistics Purposes. Rome: FAO. https://www.fao.org/fishery/collection/asfis/en

FAO (2024). FAO Major Fishing Areas for Statistical Purposes. In: FAO Fisheries and Aquaculture Division [online]. Licence: CC-BY 4.0. https://www.fao.org/fishery/geonetwork?uuid=ac02a460-da52-11dc-9d70-0017f293bd28 (the area boundaries of the fishing area map, bundled as inst/extdata/FAO_AREAS_CWP.shp)

Natural Earth. Admin 0 – Details, map units, 1:50m (the country outlines of the maps). https://www.naturalearthdata.com/downloads/50m-cultural-vectors/50m-admin-0-details/

Pebesma, E. (2018). Simple features for R: standardized support for spatial vector data. The R Journal 10(1): 439–446. doi:10.32614/RJ-2018-009

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