plotting-viz.svg•3.38 kB
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="240" aria-labelledby="title desc"><title id="title">Plotting & Viz</title><desc id="desc">Animated scanning sweep over axes with pulsing data points.</desc><defs><linearGradient id="g" x1="0" x2="1" y1="0" y2="0"><stop offset="0%" stop-color="#0ea5e9"/><stop offset="100%" stop-color="#22d3ee"/></linearGradient><pattern id="dots" width="20" height="20" patternUnits="userSpaceOnUse"><circle cx="2" cy="2" r="1" fill="#0ea5e922"/></pattern></defs><style>@keyframes drift { from { transform: translateX(0) } to { transform: translateX(-200px) } }
@keyframes pulse { 0%,100% { opacity:.8 } 50% { opacity:1 } }
@keyframes sweep { 0% { transform: translateX(-1200px) } 100% { transform: translateX(1200px) } }
@keyframes rotate { from { transform: rotate(0deg) } to { transform: rotate(360deg) } }
@keyframes orbit { from { transform: rotate(0deg) } to { transform: rotate(360deg) } }
@keyframes shimmer { 0%,100% { opacity: 0.3 } 50% { opacity: 0.8 } }
@keyframes draw { from { stroke-dasharray: 0,800 } to { stroke-dasharray: 800,0 } }
@keyframes march { from { stroke-dashoffset: 0 } to { stroke-dashoffset: 12 } }
/* reduce motion */
@media (prefers-reduced-motion: reduce) {
* { animation: none !important }
}
.bg { fill: url(#dots) }
.accent { fill: url(#g) }
.stroke { stroke: url(#g); stroke-width: 2; fill: none; opacity: .7 }
.drift { animation: drift 60s linear infinite }
.pulse { animation: pulse 4s ease-in-out infinite }
.sweep { animation: sweep 8s linear infinite }
.rotate { animation: rotate 20s linear infinite }
.orbit { animation: orbit 6s linear infinite }
.shimmer { animation: shimmer 3s ease-in-out infinite }
.draw { animation: draw 3s ease-in-out forwards }
.march { animation: march 1s linear infinite }
text.title { font-size: 42px; font-weight: 700; fill: #0b1220; font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, 'Helvetica Neue', Arial, 'Noto Sans', 'Liberation Sans', sans-serif; }
text.sub { font-size: 18px; fill: #0b122099; font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, 'Helvetica Neue', Arial, 'Noto Sans', 'Liberation Sans', sans-serif; }</style><rect width="1200" height="240" class="bg"/><g transform="translate(860,50)"><rect width="280" height="140" fill="#ffffffaa" rx="8"/><path d="M0,140 L0,0 L280,0" class="stroke"/><g class="sweep"><rect width="40" height="140" fill="#22d3ee22"/></g><circle cx="20" cy="120" r="4" class="accent pulse" style="animation-delay:0s"/><circle cx="60" cy="90" r="4" class="accent pulse" style="animation-delay:0.3s"/><circle cx="100" cy="70" r="4" class="accent pulse" style="animation-delay:0.6s"/><circle cx="140" cy="60" r="4" class="accent pulse" style="animation-delay:0.8999999999999999s"/><circle cx="180" cy="45" r="4" class="accent pulse" style="animation-delay:1.2s"/><circle cx="220" cy="30" r="4" class="accent pulse" style="animation-delay:1.5s"/><circle cx="260" cy="25" r="4" class="accent pulse" style="animation-delay:1.7999999999999998s"/></g><g transform="translate(40,150)"><text class="title">Plotting & Visualization</text><text y="28" class="sub">From quick looks to publication-ready</text></g></svg>