Skip to content

Instantly share code, notes, and snippets.

@cavedave
Created February 8, 2026 21:53
Show Gist options
  • Select an option

  • Save cavedave/e90e3a7bb169e8e246d3b0a138e07e24 to your computer and use it in GitHub Desktop.

Select an option

Save cavedave/e90e3a7bb169e8e246d3b0a138e07e24 to your computer and use it in GitHub Desktop.
decade global_stations tv_power_escaping_mw radio_power_escaping_mw seti_detectable_mw total_anthropogenic_rf_mw
1920s 5 0.0005 0.005 0.0055 0.01
1930s 15 0.003 0.25 0.253 0.05
1940s 55 0.2 0.5 0.7 1
1950s 550 5 1 6 5
1960s 3000 30 2 32 40
1970s 7500 75 3 78 100
1980s 12500 125 4 129 165
1990s 17500 175 5 180 260
2000s 22500 125 6 131 300
2010s 27500 75 6 81 450
2020-2025 32500 45 6 51 700
"""
Earth's detectable radio footprint: TV power escaping into space (1920–2025).
Data: Table 3 cleaned (space.csv). Contact Project PDF:
Earth's Evolving Radio Footprint: A Megawatt Analysis (1900-2025).
"""
import pandas as pd
import numpy as np
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
# space.csv: decade, seti_detectable_mw, total_anthropogenic_rf_mw, ...
df = pd.read_csv("space.csv")
df["seti_detectable_mw"] = pd.to_numeric(df["seti_detectable_mw"], errors="coerce")
df["total_anthropogenic_rf_mw"] = pd.to_numeric(df["total_anthropogenic_rf_mw"], errors="coerce")
decades = df["decade"].astype(str).tolist()
seti_mw = df["seti_detectable_mw"].values
total_rf_mw = df["total_anthropogenic_rf_mw"].values
x_pos = np.arange(len(decades))
fig, ax = plt.subplots(figsize=(10, 6), facecolor="#FFFFFF")
ax.set_facecolor("#FFFFFF")
ax.set_xlabel("Year / Decade", fontsize=11)
ax.set_ylabel("Estimated Average RF Power Escaping (MW)", fontsize=11)
ax.set_xticks(x_pos)
ax.set_xticklabels(decades, rotation=0)
ax.set_xlim(-0.5, len(decades) - 0.5)
ax.set_ylim(0, 750) # total_anthropogenic_rf_mw max ~700
ax.plot(x_pos, seti_mw, color="#1E8449", marker="o", markersize=8, linewidth=2.5, label="Detectable with classical SETI (TV-like narrowband leakage)")
ax.plot(x_pos, total_rf_mw, color="#C0392B", marker="o", markersize=8, linewidth=2.5, label="Total anthropogenic RF emissions (all technologies)")
ax.grid(True, linestyle="-", alpha=0.3)
ax.set_axisbelow(True)
# Title and subtitle (figure coords) close to plot
fig.text(0.5, 0.94, "Earth’s Radio Emissions: Total vs SETI-Detectable Signals", ha="center", fontsize=16, fontweight="bold", color="#1a1a2e")
fig.text(0.5, 0.90, "The last value in the Drake Equation is how long a civilisation releases signals", ha="center", fontsize=10, color="#444", style="italic")
ax.legend(loc="upper left", framealpha=0.95, fontsize=10)
# Credit line (figure coordinates)
plt.figtext(
0.01, 0.02,
"Data contactproject.org • Graph by @iamreddave",
ha="left",
fontsize=9,
style="italic",
color="gray",
)
plt.tight_layout(rect=[0, 0.04, 1, 0.90])
out_path = "space_chart.png"
fig.savefig(out_path, dpi=200, bbox_inches="tight", facecolor="#FFFFFF")
print(f"Saved {out_path}")
@cavedave
Copy link
Author

cavedave commented Feb 8, 2026

space_chart

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment