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.

This tutorial walks through a complete assessment of one FAO major fishing area, the Northeast Pacific (FAO area 67), from an empty R session to a finished report. Area 67 stretches from the eastern Bering Sea and the Gulf of Alaska along the coasts of Canada and the United States down to northern California (40° N). The tutorial uses almost every function of the package, in the order you would use them in your own work, and explains what each chart shows, how to read it and what it says about the area. If you have never used the package, read it from top to bottom and run the code as you go; if you know the package, use the table of contents to jump to the step you need.

Area 67 is a good teaching example because its history is written clearly in the data: for twenty years the fleets of Japan and the USSR took a large part of its catch, until the United States and Canada extended their fishery limits to 200 nautical miles in 1977 and the catch passed to their own fleets. It is dominated by one species, the Alaska pollock, it holds a famous case of overfishing (the Pacific ocean perch) and the salmon fisheries of the North Pacific, and its data are among the best of all FAO areas. Every number in the text below is computed from the data when the page is built, so it matches the charts.

Step What you do Functions
1 Prepare R, a project folder and the settings fao_settings(), fao_font()
2 Get the FAO data, know its version, save your own copy check_fao_update(), download_fao_data(), load_fao_data(), fao_data_info()
3 The catch of the area: trend, stages, share of the world fishing_area_data()
4 The main species fishing_area_species()
5 The main countries fishing_area_country()
6 One species, one country species_country(), country_species(), country_analysis()
7 Composition, stock status, trends and shifts species_group_composition(), stock_status(), peak_trend(), regime_shift(), area_overview()
8 Data quality, diversity and fleets data_quality(), diversity_concentration(), country_group_summary(), coastal_distant()
9 Methods from the literature catch_shocks(), collapse_analysis(), catch_synchrony(), pelagic_demersal(), distant_water_profile()
10 Species traits and temperature fishbase_match(), fao_area_sst(), mean_temperature_catch()
11 Stock assessment of the main species cmsy_setup(), cmsy_area()
12 The report in Word, LaTeX and PDF (with TinyTeX) fao_report(), tinytex::install_tinytex()
13 Where everything is saved and how to get it back

How the charts are explained. Under each chart, “🔎 How to read it” describes the axes, colours and lines, and “What it shows for area 67” gives the result. Charts describe the reported catch: they say what was landed and reported to FAO, not how many fish are in the sea. Keep that in mind for every conclusion.

1. 🧰 Prepare

Install the package once, with all the packages it uses (see 🚀 Get started for details), then load it at the start of every session:

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

Work in a project folder. Every function saves its charts and tables in the working directory (the folder getwd() returns). Create one folder per assessment, e.g. with an RStudio project, or set it yourself:

dir.create("~/fao67", showWarnings = FALSE)
setwd("~/fao67")
getwd()

Choose the settings once for the session with fao_settings(): the language of the charts, their style and the output formats. Call it without arguments to see the current settings.

fao_settings(lang = "en", theme = "classic", dpi = 100, pptx = FALSE)
Setting Here What it does
lang "en" Chart text and names in English; "zh" Chinese; "both" both
theme "classic" Chart style (see 🎨 Customise)
dpi 100 Resolution of the PNG files (300 for print)
pptx FALSE TRUE also saves every chart as an editable PowerPoint file

The chart font is chosen for your system (fao_font() shows it): SimSun on Windows, Songti SC on macOS, Noto Serif CJK SC on Linux, so that Chinese names display.

2. 💾 Get the data

2.1 Check for the newest FAO release

FAO publishes the Global Capture Production statistics once a year. The package comes with a recent release; check_fao_update() compares it with the newest one online, and download_fao_data() downloads and converts a release (about 6 MB, usually under a minute):

check_fao_update()     # newest release online vs. the data on your computer
download_fao_data()    # download the newest release (only when FAO publishes a new one)

2.2 Load the data and know which release you use

load_fao_data() returns the newest release available on your computer (downloaded, or else the one bundled with the package), one row per country, species item, area and year:

fao <- load_fao_data()
dim(fao)
#> [1] 1024698       8
show_table(fao[fao$FAO.major.fishing.area..Name. == "Pacific, Northeast" & fao$Year == 2024, ], n = 5)
Country..Name. ASFIS.species..Name. FAO.major.fishing.area..Name. Unit..Name. Unit Year Production Production.Type
95717 Canada Pink(=Humpback) salmon Pacific, Northeast Tonnes - live weight TLW, Number 2024 3,659.42 actual
95792 Canada Chum(=Keta=Dog) salmon Pacific, Northeast Tonnes - live weight TLW, Number 2024 1,840.59 actual
95867 Canada Coho(=Silver) salmon Pacific, Northeast Tonnes - live weight TLW, Number 2024 432.38 actual
95908 Canada Rainbow trout Pacific, Northeast Tonnes - live weight TLW, Number 2024 0.00 actual
95983 Canada Sockeye(=Red) salmon Pacific, Northeast Tonnes - live weight TLW, Number 2024 1,418.83 actual
Column Meaning
Country..Name. Reporting country (FAO English name)
ASFIS.species..Name. FAO species item (a species, a genus, a family or a group such as “Marine fishes nei”, nei = not elsewhere included)
FAO.major.fishing.area..Name. FAO major fishing area
Year, Production Year and catch in tonnes live weight
Production.Type How the value was obtained: reported by the country, estimated by FAO, …

Always record the release you used: FAO revises past years in every release, so a report must say which one it is based on. fao_data_info() gives the release, its dates, the download link and a citation:

info <- fao_data_info()
info
#> FAO Global Capture Production
#>   Release:   2026.1.0 (published by FAO on 2026-03-30)
#>   Years:     1950-2024
#>   File:      https://www.fao.org/fishery/static/Data/Capture_2026.1.0.zip
#>   Obtained:  bundled with faofishingreport, downloaded from FAO on 2026-10-10
#>   Licence:   CC BY 4.0 (https://www.fao.org/contact-us/terms/db-terms-of-use/en)
#>   Citation:  FAO. 2026. Global Capture Production 1950-2024, release 2026.1.0. In: Fisheries and Aquaculture [online]. Rome. [Cited 10 October 2026]. https://www.fao.org/fishery/collection/capture/en. Licence: CC BY 4.0.

2.3 Where the data are kept

Downloaded releases are kept in the data folder of the package, fao_data_dir(), and used again in every session. To share one folder between computers or a team, set the environment variable FAOFISHINGREPORT_DATA_DIR in ~/.Renviron (see 💾 FAO data). Your own copies of the data of an area can be saved like any R object:

fao_data_dir()
#> [1] "/home/runner/.local/share/R/faofishingreport"
area67_raw <- fao[fao$FAO.major.fishing.area..Name. == "Pacific, Northeast", ]
saveRDS(area67_raw, "area67_data.rds")                 # for R: readRDS("area67_data.rds")
write.csv(area67_raw, "area67_data.csv", row.names = FALSE, fileEncoding = "UTF-8")   # for Excel

3. 🌊 The catch of the area

fishing_area_data() takes the name of an FAO major area, keeps its data, and draws the total catch with its stages and the share of the area in the world marine catch:

NEP <- fishing_area_data("Pacific, Northeast")
area67 <- NEP$area_data
fishing_trend.png
fishing_percentage.png

fishing_trend.png: total catch and its stages

🔎 How to read it. The grey area is the yearly catch of the area (million tonnes). The vertical dashed lines are breakpoints: years in which the mean catch changes, found with the Bai-Perron test (strucchange::breakpoints()); a stage starts at each dashed line. The horizontal grey segments are the mean catch of each stage.

What it shows for area 67. The catch rose from 0.6 million t in 1950 to a peak of 3.4 million t in 1987, and was 2.6 million t in 2024. The test finds 3 stages: 1950–1963 (mean 0.7 million t); 1964–1983 (mean 2.0 million t); 1984–2024 (mean 2.9 million t). They follow the history of the fleets, which the next steps show one by one: a small catch of salmon and herring by Canada and the United States in the 1950s; the arrival of the trawlers of the USSR and Japan, which fished the groundfish of the Bering Sea and the Gulf of Alaska from the 1960s; and, after the 200-mile fishery limits of 1977, the growth of the fleets of the United States to the high, steady catch of the last four decades.

fishing_percentage.png: share of the world marine catch

🔎 How to read it. Each point is the catch of the area as a percentage of the catch of all FAO marine areas in that year; the red line is the mean of these shares. Inland waters are not counted.

What it shows for area 67. The area took between 2.1% and 5.0% of the world marine catch, 3.4% on average, and 3.2% in 2024. A share above its mean means the area grew faster (or declined more slowly) than the rest of the world’s oceans: here in the 1980s, when its catch reached its plateau.

NEP is a list: NEP$area_data (the data of the area, used by all the next steps), NEP$coefs_data (the stages: first and last year and mean catch) and NEP$act_world_map (the map data). Save it with saveRDS(NEP, "NEP.rds") to continue later without recomputing.

4. 🐟 The main species

fishing_area_species() ranks the species items by their catch (rank_range = 1:10: the ten largest), draws their catch over time and finds the stages of each:

sp <- fishing_area_species(area67, rank_range = 1:10)
area_species.png
area_species_wrap.png

area_species.png: the main species together, and area_species_wrap.png: one panel per species

🔎 How to read them. The first chart puts the ten species items on one scale, to compare their size. The second gives each species its own panel and scale, so that small species are readable: the line is the yearly catch, the dashed vertical lines and grey segments are the stages of that species, the dashed slanted line is a linear trend, and the percentage is the share of the species in the catch of the area over all years.

What it shows for area 67. Over the last five years the largest items were Alaska pollock(=Walleye poll.) (1.41 million t a year), North Pacific hake (0.22 million t a year), Pacific cod (0.17 million t a year), Pink(=Humpback) salmon (0.13 million t a year), Sockeye(=Red) salmon (0.13 million t a year). Four patterns stand out:

  • One species dominates. The Alaska pollock gave 43.5% of all the catch of the area since 1950, against 39.3% for the next nine items together. What happens to the pollock happens to the area.
  • Boom and bust. The Pacific ocean perch, a rockfish, went from 0.03 million t in 1950 to a peak of 0.46 million t in 1965, taken mostly by Soviet and Japanese trawlers, and fell to 0.07 million t ten years later. Rockfishes grow slowly and live long, so they cannot sustain a heavy catch for long.
  • A fishery that faded. The Pacific herring gave 0.21 million t in 1950 and peaked at 0.34 million t in 1963; its catch in 2024 was 0.022 million t.
  • Two-year cycles. The pink salmon lives two years, so its runs alternate: since 2000 the catch averaged 0.21 million t in odd years and 0.11 million t in even years, the zigzag in its panel.

Changing rank_range changes the species shown, e.g. rank_range = 11:20 for the next ten. The lines in the panels are smoothed only if timeseries_analysis = FALSE, which also removes the stages.

5. 🌎 The main countries

fishing_area_country() does the same for the countries, and adds a map of their catch:

co <- fishing_area_country(area67, rank_range = 1:8)
area_country.png
area_country_wrap.png

🔎 How to read them. As for the species: one panel per country with its stages, trend and share of the catch over all years; the map colours each country by its total catch in the area.

What it shows for area 67. Over the last five years, United States of America (95.2%) and Canada (4.5%) took almost all of the catch. It was not always so. Canada was the largest fishing country in 9 years of the 1950s; the USSR was the largest in 1962–1966 (its peak: 0.9 million t in 1972) and Japan in 1967–1982 (its peak: 1.4 million t in 1970); the Republic of Korea reached 0.5 million t in 1986. The share of the United States was only 14% in 1970 and 32% in 1980, then 87% in 1990 and 96% in 2024; it has caught more than Japan every year since 1983, and Japan’s last catch above 1 000 t in the area was in 2001.

This change has a clear cause. The Fishery Conservation and Management Act of the United States (1976, in force on 1 March 1977) created a 200-mile fishery zone and gave foreign fleets only the part of the catch that US fleets could not take; Canada extended its fishery limit to 200 miles in the same year. In the 1980s US fishing vessels first sold their catch to foreign processing ships at sea (“joint ventures”), then landed it at home, until foreign fishing ended. The panels of Japan, the USSR, Korea and Poland all end in those years.

6. 🔍 One species, one country

6.1 Who catches a species: species_country()

pollock <- species_country(area67, "Alaska pollock(=Walleye poll.)", rank_range = 1:5)
Alaska_pollock__Walleye_poll___country_map.png
Alaska_pollock__Walleye_poll___country_ranked_total.png
Alaska_pollock__Walleye_poll___country_ranked.png
Alaska_pollock__Walleye_poll___country_ranked_wrap.png
Alaska_pollock__Walleye_poll___country_pie_selected.png

🔎 How to read them. The charts break the catch of one species item down by country: the ranked chart and the small multiples (one panel per country, with stages), a pie chart of the countries by period and a map. Species names must be written as in the FAO data (unique(area67$ASFIS.species..Name.) lists them; fao_translate() gives the Chinese names).

What it shows for area 67. The pollock story is the story of the area in miniature. Japan developed the fishery (peak 1.07 million t in 1970), followed by the USSR (peak 0.39 million t in 1972) and the Republic of Korea (peak 0.46 million t in 1986). The United States caught almost no pollock before 1980; its catch rose through the joint ventures of the 1980s and has been the only large one since, with a peak of 1.55 million t in 2005.

6.2 What a country catches: country_species() and country_analysis()

country_species() breaks down the catch of one country in the area by species; country_analysis() looks at the same country in all FAO areas, to see where it fishes:

usa_67 <- country_species(area67, "United States of America", rank_range = 1:10)
usa_all <- country_analysis("United States of America", rank_range = 1:10)
United_States_of_America_species_ranked_total.png
United_States_of_America_species_ranked.png
United_States_of_America_species_ranked_wrap.png
United_States_of_America_species_pie_selected.png
United_States_of_Americaanalysis_species_ranked_total.png
United_States_of_Americaanalysis_species_ranked.png
United_States_of_Americaanalysis_species_ranked_wrap.png
United_States_of_Americaanalysis_species_pie_selected.png
United_States_of_Americafishing_area_map.png
United_States_of_Americaanalysis_species_by_area.png
United_States_of_Americaanalysis_area_total_production.png
United_States_of_Americayearly_area_production.png
United_States_of_Americayearly_area_production_wrap.png

🔎 How to read them. United_States_of_America_species_* charts: the species of the United States in area 67. United_States_of_Americaanalysis_* charts: the species of the United States in all areas, its catch by area (United_States_of_Americayearly_area_production.png, one line per area) and a map of the areas where it fishes.

What it shows. In the 1970s the US catch in area 67 was mostly Natantian decapods nei, Pink(=Humpback) salmon, King crabs: salmon, crabs and shrimps of the coastal fisheries. Over the last five years it was Alaska pollock(=Walleye poll.), North Pacific hake, Pacific cod: the groundfish that the foreign fleets had caught before. Across all FAO areas, area 67 has been the largest fishing area of the United States since 1985, when it passed the Northwest Atlantic; it now gives far more than all other areas.

7. 📈 Composition, stock status, trends and shifts

7.1 Species groups: species_group_composition()

groups <- species_group_composition(area67)
Pacific__Northeast_group_isscaap.png
Pacific__Northeast_group_isscaap_share.png

🔎 How to read it. Species items are grouped into the ISSCAAP groups of FAO (e.g. “Herrings, sardines, anchovies”, “Cods, hakes, haddocks”). The stacked areas show the catch of each group, and the _share chart its percentage of the catch; the largest groups are named, the others are “Other groups”.

What it shows for area 67. In 1950 the salmons (38%) and the herrings (35%) made up most of the catch, and the cods, hakes and haddocks only 9%. The trawl fisheries changed this within twenty years: the cods, hakes and haddocks (pollock, Pacific cod, Pacific hake) reached 53% in 1970 and 69% in 2024, with the flatfishes second.

7.2 Stock status plots: stock_status()

status <- stock_status(area67)
Pacific__Northeast_stock_status_stocks.png
Pacific__Northeast_stock_status_catch.png

🔎 How to read them. Each “stock” is the catch series of one species item in the area. Every year, a stock is classed by its catch relative to its own peak (Kleisner et al. 2013): developing (before the peak, below half of it), exploited (above half of the peak), over-exploited (after the peak, 10–50% of it), collapsed (after the peak, below 10%) and rebuilding (back to 10–50% after a collapse). The _stocks chart counts stocks, the _catch chart weights them by their catch.

What it shows for area 67. Of the 91 stocks, in 2024 44.0% were collapsed and 24.2% over-exploited by number. Weighted by catch the picture is very different: the collapsed stocks took only 1.1% of the catch and the over-exploited ones 19.7%, while the exploited stocks, still above half of their peak, took 75.0%. Many small stocks are far below their old peaks (some of them, like the herring, because their fisheries were closed or not wanted any more), but the large stocks that give most of the catch are not.

What not to conclude. A stock status plot uses catch only. A fall in catch can come from fewer fish, but also from less fishing, management, markets or a change in reporting (e.g. a species reported as “nei”). Use it to ask questions, not as a stock assessment; smooth = TRUE classes the 3-year running mean, which reduces the effect of single bad years.

7.3 Peak and trend of each species: peak_trend()

pt <- peak_trend(area67)
show_table(pt[, c("name", "peak_year", "pct_of_peak", "growth_pct_per_year", "trend")], n = 11)
Pacific__Northeast_peak_trend_species.png

🔎 How to read it. For each of the main species: the year of its peak catch, the catch of the last year as a percentage of that peak, the mean yearly growth over the last ten years and the Mann-Kendall test of that trend (“up”, “down” or “none” at P < 0.05). In area 67 the total and the pollock are both close to their peak of the late 1980s, while the herring and the Pacific ocean perch are far below theirs.

7.4 Synchronous shifts: regime_shift()

shifts <- regime_shift(area67)
Pacific__Northeast_regime_shift.png
Pacific__Northeast_regime_shift_species.png

🔎 How to read it. The breakpoints of each main species are found as in step 4; the bar chart counts, for every year, how many species changed their mean catch in that year. Years when many species change together point to a common cause: the ocean (a regime shift), a change of management, or a change of reporting.

What it shows for area 67. The years with the most simultaneous breakpoints are 1983 (3 species), 1986 (3 species), 1997 (3 species). The North Pacific had well-known climate regime shifts in 1977 and 1989 (Hare and Mantua 2000), but the catch breakpoints cluster instead in the 1980s, the years when the catch passed from foreign to US fleets. In catch data, fleets and management often leave a larger mark than the ocean; a breakpoint alone cannot tell which cause it was.

7.5 All FAO areas compared: area_overview()

overview <- area_overview()
marine_areas_peak_trend_area.png
marine_areas_catch.png

🔎 How to read it. The catch of every FAO marine area over time, and their peak year and recent trend. It places area 67 among the others: a medium-sized area with a catch that has been steady for four decades, unlike the areas that peaked and declined.

8. 🔍 Data quality, diversity and fleets

8.1 How good are the data? data_quality()

quality <- data_quality(area67)
Pacific__Northeast_data_quality_status_share.png
Pacific__Northeast_data_quality_taxon_share.png

🔎 How to read them. _taxon_share: the share of the catch identified to species, genus, family, or only to order or higher (e.g. “Marine fishes nei”). _status_share: the share reported officially by countries and the share estimated by FAO or the country.

What it shows for area 67. In 2024, 95.7% of the catch was identified to species, only 2.4% to order or higher, and 100.0% was official data reported by the countries. Few areas have data this good: the species charts above describe nearly the whole catch, and a change in a species is unlikely to be a change in reporting.

8.2 Diversity and concentration: diversity_concentration()

Pacific__Northeast_diversity.png

🔎 How to read it. Seven indicators, one per panel: the number of species items and of countries reporting, the Shannon diversity of the species, the Herfindahl-Hirschman index (HHI) of the species and of the countries, and the share of the five largest species and countries. The HHI goes from near 0 (catch spread over many) to 10 000 (one takes all); above 2 500 is “highly concentrated”.

What it shows for area 67. In 2024, 95 species items and 5 countries reported catch. Both indices are above 2 500: the HHI of the countries was 9135, close to its maximum, because the United States takes almost everything, and the HHI of the species was 3295, because of the pollock. The area has many species, but its catch depends on one country and one species.

8.3 Who fishes: country_group_summary() and coastal_distant()

income <- country_group_summary(area67)
fleets <- coastal_distant(area67)
Pacific__Northeast_country_income.png
Pacific__Northeast_country_income_share.png
Pacific__Northeast_coastal_distant.png
Pacific__Northeast_coastal_distant_share.png
Pacific__Northeast_coastal_distant_countries.png

🔎 How to read them. country_income: the catch by World Bank income group of the countries. coastal_distant: the catch of coastal countries (whose territory borders the area) and of distant-water countries, from the FAO area boundaries and country outlines.

What it shows for area 67. Nearly all the catch is taken by high-income countries; the “not classified” part of the 1960s and 1970s is the USSR, which no longer exists. The distant-water countries (Japan, the Republic of Korea, Poland and others) took 26% of the catch in 1960 and up to 59% in 1981; their share fell below 1% in 1994 and has stayed there. Note that the USSR and the Russian Federation count as coastal, because part of the Russian coast on the Bering Sea borders the area: the foreign share of the catch before 1990 was even larger than the distant-water share.

9. 🔬 Methods from the literature

These analyses follow published methods; 🔬 Shocks, collapses, synchrony and fleets explains each in detail.

9.1 Catch shocks: catch_shocks()

shocks_country <- catch_shocks(area67)
shocks_species <- catch_shocks(area67, by = "species", label = "area67_species")
Pacific__Northeast_shocks.png
Pacific__Northeast_shocks_series.png
Pacific__Northeast_shocks_by_continent.png
Pacific__Northeast_shocks_by_country.png
area67_species_shocks.png
area67_species_shocks_series.png
area67_species_shocks_by_species.png
area67_species_shocks_by_species_group.png

🔎 How to read them. A shock is a year in which the catch of a series fell far below what its recent years predicted (Cottrell et al. 2019). The bar chart gives the percentage of series with a shock in each year; _series shows the series with their shocks, _by_country / _by_continent count them by group.

What it shows for area 67. By country (by = c("country", "area"), the default), area 67 has only 8 series, so each shock is a large percentage and the chart is coarse. By species there are 98 series and 35 shocks, a more informative picture for one area. Choose the series to fit the question: countries for national food supply, species for ecology.

9.2 Fishery collapses: collapse_analysis()

set.seed(1)   # the comparison with random series uses random numbers
collapses <- collapse_analysis(area67)
show_table(collapses$summary)
Pacific__Northeast_collapse_mullon2005.png
Pacific__Northeast_collapse_mullon2005_types.png
Pacific__Northeast_collapse_mullon2005_by_group.png

🔎 How to read it. A series (one species by one country) has collapsed when, after its maximum, its catch stays below a tenth of the maximum for four years (Mullon et al. 2005). The bars count collapses by year and by the shape of the decline before them (plateau, smooth or erratic). The function repeats the analysis on random series without trend, because random ups and downs alone produce some “collapses” (Wilberg and Miller 2007): only the excess over that null model is informative.

What it shows for area 67. 10 of the 50 series collapsed (20%), against 21% of the random series. That is about what random variability alone produces, so the collapses of area 67 are, as a whole, no evidence of a fishery-wide problem; look at the individual series instead. This is why the null model matters: without it, 20% of the series “collapsed” would sound alarming.

9.3 Synchrony and the portfolio effect: catch_synchrony()

sync <- catch_synchrony(area67)
Pacific__Northeast_synchrony_species.png
Pacific__Northeast_synchrony_species_cv.png
Pacific__Northeast_synchrony_species_correlation.png

🔎 How to read them. _cv: the coefficient of variation (year-to-year variability) of each species and, in red, of the total catch. _correlation: how the species vary together. The synchrony index φ is 0 when species compensate each other and 1 when they rise and fall together (Loreau and de Mazancourt 2008).

What it shows for area 67. φ = 0.3: the total catch varies (CV 0.21) much less than its species (mean CV 0.54): the species are on average 161% more variable than their total. This portfolio effect means that when one species declines, others take its place. Among the main species in the chart, the Pacific ocean perch is by far the most variable, the mark of its boom and bust.

9.4 Pelagic to demersal ratio: pelagic_demersal()

pd <- pelagic_demersal(area67)
show_table(pd$decades[, c("period", "pd_mean", "pd_min", "pd_max")])
Pacific__Northeast_pelagic_demersal_ratio.png
Pacific__Northeast_pelagic_demersal.png
Pacific__Northeast_pelagic_demersal_share.png

🔎 How to read them. P/D is the catch of small pelagic fishes divided by the catch of demersal fishes and crustaceans (Caddy 1993; de Leiva Moreno et al. 2000), on a log scale; the dashed line is P/D = 1. In semi-enclosed seas a rising P/D has been linked to nutrient enrichment; in open areas it mostly follows what the fleets target.

What it shows for area 67. P/D fell from 0.95 in the 1950s to 0.016 in the 2020s. It does not mean the sea lost its nutrients: the herring fisheries shrank while the trawl fisheries for groundfish grew, so the ratio tells the history of the fishery.

9.5 A distant-water fleet: distant_water_profile()

japan_dw <- distant_water_profile("Japan")
Japan_distant_water.png
Japan_distant_water_share.png
Japan_distant_water_areas.png
Japan_distant_water_n_areas.png
Japan_distant_water_timeline.png

🔎 How to read them. The catch of one country in the FAO areas it borders (“adjacent”) and in the others (“distant-water”), the share of distant-water catch, the number of areas fished each year and when it entered each area (Swartz et al. 2010).

What it shows. Japan’s only adjacent area is area 61. Its distant-water share rose to 23.1% in 1970, when it fished 13 distant FAO areas; in that year area 67 alone gave 1.39 million t, or 70% of its distant-water catch. The 200-mile zones of the late 1970s closed the richest of these waters, and the share was 7.6% in 2024. Area 67 and Japan show the two sides of the same change.

10. 🌡️ Species traits and temperature

10.1 FishBase traits: fishbase_match()

traits <- fishbase_match(area67, version = "builtin")
show_table(traits[, c("species_en", "catch_pct", "match_type", "trophic_level", "temp_pref_mean")], n = 8)
species_en catch_pct match_type trophic_level temp_pref_mean
Alaska pollock(=Walleye poll.) 43.51 exact 3.57 1.6
North Pacific hake 7.67 exact 4.32 8.6
Pacific cod 6.80 exact 3.78 2.9
Pink(=Humpback) salmon 5.25 exact 4.49 3.3
Pacific herring 4.61 exact 3.16 2.8
Sockeye(=Red) salmon 4.25 exact 3.54 4.2
Yellowfin sole 3.42 exact 3.49 3.4
Pacific ocean perch 2.66 exact 3.48 3.8

🔎 How to read it. Each FAO species item is matched to FishBase or SeaLifeBase by published rules (exact name, synonym, WoRMS, the mean of a higher taxon); match_type says which rule was used and each row has links to check it. version = "builtin" uses the table bundled with the package, so it works offline. Matches are first guesses: check the main ones with the links (see 🐠 FishBase).

10.2 Sea surface temperature and the mean temperature of the catch

sst67 <- fao_area_sst("Pacific, Northeast")
mtc <- mean_temperature_catch(area67, version = "builtin")
show_table(mtc$trend[, c("period_start", "period_end", "mtc_slope_per_decade", "trend", "sst_slope_per_decade", "cor_mtc_sst")])
Pacific__Northeast_mtc.png

🔎 How to read it. The mean temperature of the catch (MTC, red) is the average preferred temperature of the species caught, weighted by their catch (Cheung et al. 2013); the blue line is the sea surface temperature (SST) of the area and the light band its range within the area. The lower panel is the share of the catch with a known preferred temperature; years below 50% are faded. A rising MTC means warm-water species take a larger share of the catch.

What it shows for area 67. The MTC stays between 2.7 and 3.8 °C, far below the SST of the area (9.9 °C in 2024). The reason is the species: the main catch is of cold-water fishes that live near the bottom, such as the pollock (preferred temperature 1.6 °C) and the Pacific cod (2.9 °C). The MTC was lowest in 1972, when the pollock gave 52% of the catch, and highest in 1967, before the pollock fishery grew; the Pacific hake of the US west coast (8.6 °C) raises it in the years when its catch is large. The trend of the MTC is “none” over 1950–2024 (0.009 °C per decade) and “none” over 1970–2024 (0.056 °C per decade) while the SST warmed by 0.21 °C per decade. The MTC of area 67 follows the mix of target species more than the ocean: read it with the species charts.

11. 📉 Stock assessment of the main species

cmsy_area() runs the CMSY++ catch-only stock assessment (Froese et al. 2023) for the species with the largest catch. It needs the JAGS program once (cmsy_setup(), see 📉 CMSY++) and takes a few minutes; the charts below were made beforehand with the same code.

cmsy_setup()                                            # once: JAGS and the R packages
nep_cmsy <- cmsy_area("Pacific, Northeast", top = 10)   # the ten main species
nep_cmsy$summary                                        # B/Bmsy, F/Fmsy, MSY, status
kobe_all.png

🔎 How to read the Kobe plot. Each circle is one stock in its last year: its biomass relative to the biomass that gives the maximum sustainable yield (B/Bmsy, horizontal) and its fishing pressure relative to the one that gives it (F/Fmsy, vertical); the size is the catch. Green (bottom right): healthy; red (top left): overfished and still overfishing; orange and yellow: one of the two. The dashed line at B/Bmsy = 0.8 separates “maximally sustainably fished” from “overfished” in the FAO classes for catch-only results.

What it shows for area 67. 6 of the 10 stocks assessed were below 0.8 Bmsy in their last year; the lowest were Pacific herring (0.26) and Pacific ocean perch (0.37), the two fisheries whose catch has fallen furthest from its peak.

Stock species B_Bmsy F_Fmsy MSY status
ALK_67 Alaska pollock(=Walleye poll.) 0.91 1.16 1,382,729 maximally sustainably fished
NHA_67 North Pacific hake 0.69 1.02 268,082 overfished
PCO_67 Pacific cod 0.78 0.84 266,781 overfished
PIN_67 Pink(=Humpback) salmon 0.61 1.14 163,342 overfished
HEP_67 Pacific herring 0.26 0.99 197,699 overfished
SOC_67 Sockeye(=Red) salmon 0.85 1.02 134,004 maximally sustainably fished
YES_67 Yellowfin sole 1.24 0.55 152,488 maximally sustainably fished
OPP_67 Pacific ocean perch 0.37 1.25 191,429 overfished
CHU_67 Chum(=Keta=Dog) salmon 0.71 1.21 59,817 overfished
HUM_67 Atka mackerel 0.85 1.33 59,732 maximally sustainably fished
overview.png

🔎 How to read it. One row per stock: its B/Bmsy in the last year with the 95% confidence limits (the bar), coloured by status. A long bar means the data could not pin the stock size down.

status_time.png

🔎 How to read it. The share of the assessed stocks in each status class, year by year. It shows whether the stocks of the area moved together, e.g. all declining in the same years.

management_first.png

🔎 How to read it. The “management” chart of the largest stock (Alaska pollock(=Walleye poll.)): the catch with the MSY (top left), the fishing pressure F/Fmsy (top right), the biomass B/Bmsy with the lines at Bmsy and 0.8 Bmsy (bottom left), and the path of the stock through the Kobe plot (bottom right). Shaded bands are the 95% limits. See 📉 CMSY++ for all CMSY++ charts.

FAO capture statistics have no abundance index, so these are catch-only assessments driven largely by their priors: indicative only, never a replacement for a full stock assessment. This matters in area 67: most of its main stocks are assessed every year by the fishery agencies of the United States and Canada with survey data, and their catch is held by catch limits, so a catch that stays below its old peak can be read by a catch-only method as a smaller stock. Compare these results with the official assessments before using them. The CMSY++ code is that of its authors (https://github.com/SISTA16/cmsyPlusPlus); see the disclaimer in 📉 CMSY++.

12. 📝 The report in Word, LaTeX and PDF

fao_report() runs the analyses of the area and writes the whole assessment as a report: cover, abstract, data and methods, results with charts and tables, conclusions, references and appendix. Here a Word report in English, with the catch shocks and the mean temperature of the catch added to the default sections:

report <- fao_report(67, lang = "en", shocks = TRUE, mtc = TRUE)
report
#> FAO report: /tmp/RtmpIm8Mqo/faofishingreport_site_20a852b71945d/reports/FAO67_report_en.docx
#> Sections: total, species, countries, groups, status, quality, diversity, fleets, shocks, mtc
#>   $main_species           main species of the last five years (10 rows)
#>   $main_countries         main fishing countries of the last five years (5 rows)
#>   $mtc_species            species of the mean temperature of the catch, with FishBase matches (200 rows)
#>   $analyses               results of the analyses: total, species, countries, groups, status, quality, diversity, fleets, shocks, mtc

The headings of the Word file:

doc <- officer::docx_summary(officer::read_docx(report$file[["docx"]]))
headings <- doc$text[doc$style_name %in% c("FAO Heading 1", "FAO Heading 2")]
headings
#>  [1] "1 Data and methods"                          
#>  [2] "1.1 Data sources"                            
#>  [3] "1.2 Methods"                                 
#>  [4] "2 Results and conclusions"                   
#>  [5] "2.1 Catch trends and stages"                 
#>  [6] "2.2 Main species"                            
#>  [7] "2.3 Main fishing countries"                  
#>  [8] "2.4 Composition by species group"            
#>  [9] "2.5 Stock status"                            
#> [10] "2.6 Data quality"                            
#> [11] "2.7 Diversity and concentration of the catch"
#> [12] "2.8 Coastal and distant-water fleets"        
#> [13] "2.9 Catch shocks"                            
#> [14] "2.10 Mean temperature of the catch"          
#> [15] "2.11 Conclusions"                            
#> [16] "References"                                  
#> [17] "Appendix"

12.1 Before the PDF: install TinyTeX once

The Word file and the LaTeX source (format = "latex") need nothing else. The PDF is compiled from the LaTeX source with XeLaTeX, which comes with a LaTeX distribution. The simplest is TinyTeX (Xie 2019), a small distribution installed from R, without administrator rights:

install.packages("tinytex")
tinytex::install_tinytex()   # once, a few minutes; restart R afterwards
tinytex::is_tinytex()        # TRUE when it is installed

The first PDF takes longer: TinyTeX downloads the LaTeX packages the report uses (e.g. ctex and the Chinese fonts for a Chinese report) and keeps them for the next times. If TinyTeX was installed long ago and the PDF fails with a message such as “TeX Live is older than remote”, update it with tinytex::reinstall_tinytex(). 📝 Assessment report lists the other cases (another LaTeX distribution, compiling an edited .tex file).

12.2 The same report as LaTeX and PDF

The same report as LaTeX and PDF, in Chinese, with CMSY++ (reusing the results of step 11 so CMSY++ does not run again):

fao_report(67, lang = "zh", format = c("docx", "latex", "pdf"), shocks = TRUE, mtc = TRUE,
           cmsy = nep_cmsy)
File What it is
reports/FAO67_report_en.docx The Word report, to edit and complete
reports/FAO67_report_zh.tex and reports/FAO67_report_zh_figures/ The LaTeX source and its figures
reports/FAO67_report_zh.pdf The PDF (needs XeLaTeX, e.g. TinyTeX, see above)

The report is a first draft: the text is written from templates filled with the results. Read it, complete the grey “To be completed” notes (other data sources, discussion, other references) and check every conclusion against the charts above. See 📝 Assessment report for every option.

13. 🗂️ Where everything is saved and how to get it back

Every function writes into the working directory:

Folder What Written by
figures/png/ fishing_trend.png, fishing_percentage.png fishing_area_data()
figures/png/area/ area_species*.png, area_country*.png fishing_area_species(), fishing_area_country()
figures/png/ area_country_map.png, <species>_country_map.png maps of fishing_area_country(), species_country()
figures/png/species/ <species>_country_*.png species_country()
figures/png/country/ <country>_species_*.png, <country>analysis_*.png, <country>yearly_area_production*.png country_species(), country_analysis()
figures/png/summary/ <label>_<analysis>*.png, e.g. Pacific__Northeast_stock_status_stocks.png the summary and literature analyses
figures/pptx/... The same charts as PowerPoint files when pptx = TRUE
tables/ CSV tables (UTF-8, open in Excel) every function with table = TRUE
reports/ The reports, and reports/cmsy/ with the CMSY++ results fao_report()
cmsy_areas/ The CMSY++ runs, charts and tables of each area cmsy_area()

The files saved by this tutorial:

head(list.files("figures/png", recursive = TRUE), 20)
#>  [1] "Alaska_pollock__Walleye_poll___country_map.png"                    
#>  [2] "area_country_map.png"                                              
#>  [3] "area/area_country_wrap.png"                                        
#>  [4] "area/area_country.png"                                             
#>  [5] "area/area_species_wrap.png"                                        
#>  [6] "area/area_species.png"                                             
#>  [7] "country/United_States_of_America_species_pie_selected.png"         
#>  [8] "country/United_States_of_America_species_ranked_total.png"         
#>  [9] "country/United_States_of_America_species_ranked_wrap.png"          
#> [10] "country/United_States_of_America_species_ranked.png"               
#> [11] "country/United_States_of_Americaanalysis_area_total_production.png"
#> [12] "country/United_States_of_Americaanalysis_species_by_area.png"      
#> [13] "country/United_States_of_Americaanalysis_species_pie_selected.png" 
#> [14] "country/United_States_of_Americaanalysis_species_ranked_total.png" 
#> [15] "country/United_States_of_Americaanalysis_species_ranked_wrap.png"  
#> [16] "country/United_States_of_Americaanalysis_species_ranked.png"       
#> [17] "country/United_States_of_Americafishing_area_map.png"              
#> [18] "country/United_States_of_Americayearly_area_production_wrap.png"   
#> [19] "country/United_States_of_Americayearly_area_production.png"        
#> [20] "fishing_percentage.png"
length(list.files("figures/png", recursive = TRUE))
#> [1] 65
head(list.files("tables"), 10)
#>  [1] "Alaska_pollock__Walleye_poll___country_ranked_table.csv"
#>  [2] "area67_species_shocks_by_group.csv"                     
#>  [3] "area67_species_shocks_by_year.csv"                      
#>  [4] "area67_species_shocks_series.csv"                       
#>  [5] "area67_species_shocks.csv"                              
#>  [6] "country_coefs_data.csv"                                 
#>  [7] "country_ranked_table.csv"                               
#>  [8] "Japan_distant_water_areas.csv"                          
#>  [9] "Japan_distant_water.csv"                                
#> [10] "marine_areas_peak_trend_area.csv"

Getting results back. Every function also returns its results to R (assign them, as above). To continue another day, save them and read them back, or read the CSV tables:

saveRDS(list(NEP = NEP, status = status, mtc = mtc), "area67_results.rds")
results <- readRDS("area67_results.rds")
names(results)
#> [1] "NEP"    "status" "mtc"
head(read.csv("tables/Pacific__Northeast_stock_status_stocks.csv"), 3)
#>                     species_name                     species_en first_year
#> 1 Alaska pollock(=Walleye poll.) Alaska pollock(=Walleye poll.)       1950
#> 2            Pacific ocean perch            Pacific ocean perch       1950
#> 3             North Pacific hake             North Pacific hake       1960
#>   peak_year peak_tonnes last_year_tonnes pct_of_peak status_last_year
#> 1      1987     1694473       1434351.99    84.64885        Exploited
#> 2      1965      460647         63974.28    13.88792       Rebuilding
#> 3      1987      372672        143562.00    38.52235   Over-exploited

When FAO publishes a new release, run download_fao_data() and the same code again: every chart, table and number is recomputed from the new data, and fao_data_info() gives the new citation.

14. 🎨 Make it yours

The same analyses in Chinese or bilingual charts, another style or map projection:

fao_settings(lang = "zh")                  # Chinese charts and names
fao_settings(lang = "both")                # Chinese and English on the same chart
fao_settings(theme = "minimal", palette = "npg", map_projection = "robinson", map_center = 180)
fao_settings(reset = TRUE)                 # back to the defaults

See 🎨 Customise charts and maps for all settings.

✅ Summary

Step Function Main output
Data load_fao_data(), fao_data_info() The data and the release to cite
Area fishing_area_data() Total catch, stages, share of the world
Species, countries fishing_area_species(), fishing_area_country(), species_country(), country_species(), country_analysis() Who catches what, and its stages
Status species_group_composition(), stock_status(), peak_trend(), regime_shift(), area_overview() Composition, status, trends, shifts
Quality, fleets data_quality(), diversity_concentration(), country_group_summary(), coastal_distant() How reliable and how concentrated
Literature catch_shocks(), collapse_analysis(), catch_synchrony(), pelagic_demersal(), distant_water_profile() Shocks, collapses, synchrony, P/D, fleets
Temperature fishbase_match(), fao_area_sst(), mean_temperature_catch() Traits, SST, MTC
Assessment cmsy_area() B/Bmsy, F/Fmsy, MSY
Report fao_report(), with TinyTeX for the PDF Word, LaTeX, PDF

📖 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
  • Caddy, J. F. (1993). Toward a comparative evaluation of human impacts on fishery ecosystems of enclosed and semi-enclosed seas. Reviews in Fisheries Science, 1(1), 57–95. doi:10.1080/10641269309388535
  • Cheung, W. W. L., Watson, R. and Pauly, D. (2013). Signature of ocean warming in global fisheries catch. Nature, 497, 365–368. doi:10.1038/nature12156
  • Cottrell, R. S., Nash, K. L., Halpern, B. S., Remenyi, T. A., Corney, S. P., Fleming, A., Fulton, E. A., Hornborg, S., Johne, A., Watson, R. A. and Blanchard, J. L. (2019). Food production shocks across land and sea. Nature Sustainability, 2, 130–137. doi:10.1038/s41893-018-0210-1
  • de Leiva Moreno, J. I., Agostini, V. N., Caddy, J. F. and Carocci, F. (2000). Is the pelagic-demersal ratio from fishery landings a useful proxy for nutrient availability? ICES Journal of Marine Science, 57(4), 1091–1102. doi:10.1006/jmsc.2000.0705
  • FAO. 2026. Global Capture Production 1950-2024, release 2026.1.0. In: Fisheries and Aquaculture [online]. Rome. [Cited 10 October 2026]. https://www.fao.org/fishery/collection/capture/en. Licence: CC BY 4.0.
  • Fishery Conservation and Management Act of 1976. Public Law 94-265, 90 Stat. 331, United States (in force 1 March 1977; now the Magnuson-Stevens Fishery Conservation and Management Act).
  • Froese, R., Winker, H., Coro, G., Palomares, M. L. D., Tsikliras, A. C., Dimarchopoulou, D., Touloumis, K., Demirel, N., Vianna, G. M. S., Scarcella, G., Schijns, R., Liang, C. and Pauly, D. (2023). New developments in the analysis of catch time series as the basis for fish stock assessments: the CMSY++ method. Acta Ichthyologica et Piscatoria, 53, 173–189. doi:10.3897/aiep.53.105910
  • Hare, S. R. and Mantua, N. J. (2000). Empirical evidence for North Pacific regime shifts in 1977 and 1989. Progress in Oceanography, 47(2–4), 103–145. doi:10.1016/S0079-6611(00)00033-1
  • 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
  • Loreau, M. and de Mazancourt, C. (2008). Species synchrony and its drivers: neutral and nonneutral community dynamics in fluctuating environments. The American Naturalist, 172(2), E48–E66. doi:10.1086/589746
  • Mullon, C., Fréon, P. and Cury, P. (2005). The dynamics of collapse in world fisheries. Fish and Fisheries, 6(2), 111–120. doi:10.1111/j.1467-2979.2005.00181.x
  • Swartz, W., Sala, E., Tracey, S., Watson, R. and Pauly, D. (2010). The spatial expansion and ecological footprint of fisheries (1950 to present). PLoS ONE, 5(12), e15143. doi:10.1371/journal.pone.0015143
  • Wilberg, M. J. and Miller, T. J. (2007). Comment on “Impacts of biodiversity loss on ocean ecosystem services”. Science, 316, 1285. doi:10.1126/science.1137946
  • Xie, Y. (2019). TinyTeX: a lightweight, cross-platform, and easy-to-maintain LaTeX distribution based on TeX Live. TUGboat, 40(1), 30–32. https://tug.org/TUGboat/tb40-1/tb124xie-tinytex.pdf; R package tinytex: https://CRAN.R-project.org/package=tinytex