gitwtfhub

wtf is arxiv-trends?

nabiliqbal/arxiv-trends — explained in plain English

Analysis updated 2026-05-18

1PythonAudience · researcherComplexity · 2/5Setup · easy

TL;DR

A script that plots how many arXiv papers are submitted per week each year, for any research category.

Mindmap

mindmap
  root((arxiv-trends))
    What it does
      Fetch arXiv submissions
      Cache results locally
      Plot weekly trends
    Tech stack
      Python
      matplotlib
      requests
    Use cases
      Year over year comparison
      Seasonality spotting
      Trend smoothing
    Audience
      Researchers
      Academics tracking a field

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Compare year-over-year submission trends for a physics, math, or computer science arXiv category.

REASON 2

Spot seasonal patterns in when researchers submit papers to a given field.

REASON 3

Smooth noisy weekly submission counts with a moving average to see the underlying trend.

REASON 4

Cache arXiv submission data locally to avoid repeatedly hitting the API while experimenting with plots.

What's in the stack?

PythonmatplotlibrequestsarXiv API

How it stacks up

nabiliqbal/arxiv-trends0xustaz/streamgatea-bissell/unleash-lite
Stars111
LanguagePythonPythonPython
Setup difficultyeasyhardhard
Complexity2/54/54/5
Audienceresearcherdeveloperresearcher

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · easy Time to first run · 5min

A full multi-year fetch of a busy category can take 10 to 15 minutes due to arXiv's required rate limiting.

Wtf does this do

arxiv-trends is a small Python script that downloads paper submission data from the arXiv API and plots how many papers were submitted per week of the year, with one line per year, so you can compare seasonal patterns and see how a research field's output has shifted over time. By default it looks at the hep-th physics category over the last five years, but it works on any arXiv category by changing a single command line flag. The script fetches every paper in a chosen category one calendar year at a time, then saves the raw results to a local JSON cache file so that re-running the script or trying different smoothing settings does not require hitting the arXiv API again. It only counts a paper under its primary category, dropping cases where a paper is cross-listed into a second category as well. Papers are grouped by the week of their original first-version submission date, using a simple day-of-year based week count rather than the standard ISO week definition, specifically to avoid miscounting early January papers into the previous year. Because arXiv asks users to rate limit their requests, the script pauses three seconds between calls, so fetching a full five years of data for a busy category can take ten to fifteen minutes the first time. Once the data is cached, replotting is instant. To run it you need Python 3.10 or later along with the matplotlib and requests libraries, installable with either uv or plain pip. You can then run the script with different categories, year ranges, or an optional moving average smoothing window to make the underlying trend easier to see beneath weekly noise. Plots are saved as image files in a results folder, and each run's raw fetched data is stored in its own cache file named after the category and year range, so different categories do not overwrite each other's cache. The README does not mention a license, so it is not clear what usage rights apply to reusing or modifying this script beyond running it yourself.

Yoink these prompts

Prompt 1
Show me how to run arxiv-trends on the cs.LG category with a 4-week moving average.
Prompt 2
Explain how this script's local JSON cache format works and what fields it keeps.
Prompt 3
Help me set up Python and the dependencies needed to run arxiv_trends.py.
Prompt 4
Walk me through why this script uses day-of-year weeks instead of ISO weeks.

Frequently asked questions

wtf is arxiv-trends?

A script that plots how many arXiv papers are submitted per week each year, for any research category.

What language is arxiv-trends written in?

Mainly Python. The stack also includes Python, matplotlib, requests.

How hard is arxiv-trends to set up?

Setup difficulty is rated easy, with roughly 5min to a first successful run.

Who is arxiv-trends for?

Mainly researcher.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.