{"spec_id":"line-3d-trajectory","library":"seaborn","language":"python","code":"\"\"\" anyplot.ai\nline-3d-trajectory: 3D Line Plot for Trajectory Visualization\nLibrary: seaborn 0.13.2 | Python 3.13.13\nQuality: 82/100 | Created: 2026-05-16\n\"\"\"\n\nimport os\n\nimport matplotlib.pyplot as plt\nimport numpy as np\n\n\n# Theme tokens\nTHEME = os.getenv(\"ANYPLOT_THEME\", \"light\")\nPAGE_BG = \"#FAF8F1\" if THEME == \"light\" else \"#1A1A17\"\nINK = \"#1A1A17\" if THEME == \"light\" else \"#F0EFE8\"\nINK_SOFT = \"#4A4A44\" if THEME == \"light\" else \"#B8B7B0\"\n\n# Data - Lorenz attractor\nnp.random.seed(42)\ndt = 0.01\nnum_steps = 2000\nx, y, z = np.zeros(num_steps), np.zeros(num_steps), np.zeros(num_steps)\nx[0], y[0], z[0] = 1, 1, 1\n\n# Lorenz attractor parameters\nsigma, rho, beta = 10, 28, 8 / 3\n\nfor i in range(num_steps - 1):\n    dx = sigma * (y[i] - x[i])\n    dy = x[i] * (rho - z[i]) - y[i]\n    dz = x[i] * y[i] - beta * z[i]\n\n    x[i + 1] = x[i] + dt * dx\n    y[i + 1] = y[i] + dt * dy\n    z[i + 1] = z[i] + dt * dz\n\n# Plot\nfig = plt.figure(figsize=(16, 9), facecolor=PAGE_BG)\nax = fig.add_subplot(111, projection=\"3d\")\nax.set_facecolor(PAGE_BG)\n\n# Plot trajectory with time-based coloring\nnorm = plt.Normalize(vmin=0, vmax=num_steps)\ncolors = plt.cm.viridis(norm(np.arange(num_steps)))\n\nfor i in range(num_steps - 1):\n    ax.plot(x[i : i + 2], y[i : i + 2], z[i : i + 2], color=colors[i], linewidth=2.5)\n\n# Style\nax.set_xlabel(\"X\", fontsize=20, color=INK)\nax.set_ylabel(\"Y\", fontsize=20, color=INK)\nax.set_zlabel(\"Z\", fontsize=20, color=INK)\nax.set_title(\"line-3d-trajectory · seaborn · anyplot.ai\", fontsize=24, fontweight=\"medium\", color=INK)\nax.tick_params(axis=\"both\", labelsize=16, colors=INK_SOFT)\n\n# Grid styling\nax.grid(True, alpha=0.1, color=INK_SOFT)\n\n# Save\nplt.savefig(f\"plot-{THEME}.png\", dpi=300, bbox_inches=\"tight\", facecolor=PAGE_BG)\n"}