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")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")2️⃣ country_species(): what a country catches in the
area
norway <- country_species(FAO27$area_data, country_name = "Norway")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")| 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")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
