Data Visualization Examples#

This page demonstrates how to visualize SEC filing data retrieved with edgar-sec using standard Python libraries such as Matplotlib, Seaborn, and Pandas. You can integrate edgar-sec into dashboards, analytics workflows, and compliance monitoring tools.

Filing Volume Line Chart

Visualize filing activity over time using matplotlib.pyplot.

import matplotlib.pyplot as plt
import edgar_sec as ed

edgar = ed.EdgarAPI()
history = edgar.get_submissions(ticker="AAPL")

dates = [f.filing_date for f in history.filings if f.form == "10-K"]
dates.sort()

plt.figure(figsize=(10, 6))
plt.hist(dates, bins=len(set(dates)), color="navy")
plt.title("Apple 10-K Filing Dates")
plt.xlabel("Year")
plt.ylabel("Number of Filings")
plt.xticks(rotation=45)
plt.tight_layout()
plt.grid(True)
plt.show()
Form Type Frequency Bar Chart

Compare the frequency of different SEC form types.

import matplotlib.pyplot as plt
import edgar_sec as ed
from collections import Counter

edgar = ed.EdgarAPI()
history = edgar.get_submissions(ticker="MSFT")

form_counts = Counter(f.form for f in history.filings)
forms, counts = zip(*form_counts.most_common())

plt.figure(figsize=(12, 6))
plt.bar(forms, counts, color="skyblue")
plt.title("Form Type Frequency for Microsoft")
plt.xlabel("Form Type")
plt.ylabel("Count")
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

Advanced Visualizations#

Filing Activity Heatmap

Use seaborn to visualize temporal filing density.

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import edgar_sec as ed

edgar = ed.EdgarAPI()
history = edgar.get_submissions(ticker="GOOGL")

df = pd.DataFrame({
    "date": [f.filing_date for f in history.filings],
    "form": [f.form for f in history.filings]
})
df["year"] = pd.to_datetime(df["date"]).dt.year
df["form"] = df["form"].str.upper()

pivot = df.pivot_table(index="form", columns="year", aggfunc="size", fill_value=0)

plt.figure(figsize=(10, 6))
sns.heatmap(pivot, annot=True, fmt="d", cmap="Blues")
plt.title("Filing Frequency by Form and Year (GOOGL)")
plt.ylabel("Form Type")
plt.xlabel("Year")
plt.tight_layout()
plt.show()
Filing Trends Comparison

Compare 10-K vs 10-Q over time for a company.

import matplotlib.pyplot as plt
import pandas as pd
import edgar_sec as ed

edgar = ed.EdgarAPI()
history = edgar.get_submissions(ticker="META")

filings = pd.DataFrame({
    "date": [f.filing_date for f in history.filings],
    "form": [f.form for f in history.filings]
})
filings["year"] = pd.to_datetime(filings["date"]).dt.year
summary = filings.groupby(["year", "form"]).size().unstack(fill_value=0)

summary[["10-K", "10-Q"]].plot(kind="bar", stacked=True, figsize=(10, 6))
plt.title("Annual Filing Count: 10-K vs 10-Q (META)")
plt.xlabel("Year")
plt.ylabel("Number of Filings")
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()