Data Visualization Design Poster
This HTML version recreates your Python matplotlib concept as a responsive SVG poster with bubbles, stems, annotations, and a clean editorial canvas.
Data Visualization Design Poster
Design Dimension
Visual Intensity
Bubble-network infographic with annotated clusters, reference stems, and minimal editorial styling
Bubble-network infographic with annotated clusters, reference stems, and minimal editorial styling.
import numpy as np
import matplotlib.pyplot as plt
Reproducibility
np.random.seed(7)
Canvas
fig, ax = plt.subplots(figsize=(14, 8), dpi=160)
fig.patch.set_facecolor("white")
ax.set_facecolor("#f8f8f6")
Limits
ax.set_xlim(0, 100)
ax.set_ylim(0, 70)
Grid and axes styling
ax.grid(True, which="major", linestyle="--", linewidth=0.6, color="#d7d7d7", alpha=0.8)
ax.set_axisbelow(True)
for spine in ax.spines.values():
spine.set_color("#c8c8c8")
spine.set_linewidth(1.2)
ax.tick_params(colors="#666666", labelsize=10)
Create structured scatter data
n = 42
x = np.linspace(6, 95, n) + np.random.normal(0, 2.5, n)
y = 30 + 12*np.sin(x/10) + np.random.normal(0, 5, n)
sizes = np.random.randint(80, 1200, n)
palette = [
"#4C78A8", "#F58518", "#54A24B", "#E45756",
"#72B7B2", "#B279A2", "#FF9DA6", "#9D755D"
]
colors = np.random.choice(palette, n)
Light connecting network lines
for i in range(n - 1):
ax.plot(
[x[i], x[i+1]], [y[i], y[i+1]],
color="#9aa0a6", linewidth=0.8, alpha=0.35
)
Add some vertical reference stems
for xi in np.linspace(10, 95, 14):
ax.vlines(xi, 5, 65, color="#bdbdbd", linewidth=0.5, alpha=0.35)
Bubble scatter
ax.scatter(
x, y,
s=sizes,
c=colors,
alpha=0.82,
edgecolors="white",
linewidths=1.6
)
Add a few emphasized labeled points
important_idx = [5, 12, 19, 27, 34]
labels = ["Cluster A", "Peak Node", "Signal Hub", "Region X", "Outlier"]
for idx, label in zip(important_idx, labels):
ax.annotate(
label,
(x[idx], y[idx]),
xytext=(x[idx] + 2.5, y[idx] + 4),
fontsize=9,
color="#333333",
arrowprops=dict(
arrowstyle="-",
color="#777777",
lw=0.8,
alpha=0.7
),
bbox=dict(
boxstyle="round,pad=0.25",
facecolor="white",
edgecolor="#dddddd",
alpha=0.9
)
)
Bottom triangular markers to echo infographic style
tri_x = np.linspace(8, 96, 18)
tri_y = np.random.uniform(2, 6, len(tri_x))
tri_colors = np.random.choice(["#C44E52", "#8172B2", "#55A868"], len(tri_x))
ax.scatter(tri_x, tri_y, s=70, marker="^", c=tri_colors, alpha=0.9, edgecolors="none")
Small floating note boxes
notes = [
(15, 58, "Trend
Zone"),
(48, 61, "High
Density"),
(80, 54, "Emerging
Area")
]
for nx, ny, txt in notes:
ax.text(
nx, ny, txt,
fontsize=8,
color="#444444",
ha="center",
va="center",
bbox=dict(
boxstyle="round,pad=0.35",
facecolor="#fcfcfc",
edgecolor="#d9d9d9",
alpha=0.95
)
)
Titles and labels
ax.set_title("Data Visualization Design Poster", fontsize=20, weight="bold", color="#222222", pad=16)
ax.set_xlabel("Design Dimension", fontsize=12, color="#444444", labelpad=10)
ax.set_ylabel("Visual Intensity", fontsize=12, color="#444444", labelpad=10)
Subtle caption
fig.text(
0.5, 0.02,
"Bubble-network infographic with annotated clusters, reference stems, and minimal editorial styling",
ha="center", fontsize=10, color="#666666"
)
plt.tight_layout(rect=[0.02, 0.05, 0.98, 0.95])
plt.show()
plt.savefig("visualization_poster.png", dpi=300, bbox_inches="tight")

No comments:
Post a Comment