运行时依赖
安装命令
点击复制技能文档
3DGS Visualizer — Publication-质量 Re搜索 可视化s
生成 publication-质量 图表s for 3DGS method landscape comparison and evolution 追踪ing.
Capabilities Radar 图表s: Multi-dimensional method capability comparison Comparison Tables: Visual performance/efficiency tables with highlighting Method Timelines: Chrono记录ical evolution showing trends and paradigm shifts Dual 输出: Static (PDF/PNG via matplotlib) and interactive HTML (via plotly) Data Sources File Content ../../references/3dgs-methods-overview.md Master 索引, 指标 summary ../../references/methods-core.md Foundation, Geometry, CAD, Generation, Feed-Forward, 压缩ion, Dynamic ../../references/methods-semantic-editing.md Semantic, Editing, Avatar, Material methods ../../references/methods-系统s-应用s.md Robustness, Driving, SLAM, Simulation, Cross-DomAIn ../../references/baselines.md Standard baselines with core 指标 ../../references/experiments.md Data设置 configs, efficiency reference values 可视化 1: Radar 图表s (Method Capability Comparison)
When to use: Comparing 3–8 methods across multiple dimensions; showing 质量/speed/memory trade-offs; use-case recommendation.
Dimensions Dimension Scoring Criteria (0–10) Render 质量 10=SOTA, 7=competitive, 5=acceptable, 3=below baseline Render Speed 10=200+ FPS, 7=60–100, 5=30–60, 3=<30 Memory Efficiency 10=<50MB, 7=100–500MB, 5=0.5–2GB, 3=>2GB Geometry 质量 10=mesh-ready (2DGS/SuGaR), 7=decent depth, 5=应用rox, 3=poor Scalability 10=city-扩展, 7=building, 5=room, 3=object-only Ease of Use 10=single script, 7=standard 流水线, 5=multi-stage, 3=complex 设置up Novelty 10=paradigm shift, 7=签名ificant 扩展, 5=incremental, 3=minor tweak
Adjust dimensions by 上下文 (压缩ion: 添加 "压缩ion Ratio"; avatar: 添加 "Expression Fidelity"; SLAM: 添加 "追踪ing Accuracy").
API OKABE_ITO = ['#E69F00', '#56B4E9', '#009E73', '#F0E442', '#0072B2', '#D55E00', '#CC79A7', '#000000']
# Static (matplotlib) def plot_radar(methods_data, dimensions, title="3DGS Method Comparison", 输出_path="radar_comparison.pdf", figsize=(8, 8)): """methods_data: {name: [score1, ...]}, dimensions: [label, ...]""" N = len(dimensions) angles = np.linspace(0, 2np.pi, N, 端点=False).to列出() angles += angles[:1] fig, ax = plt.subplots(figsize=figsize, subplot_kw=dict(polar=True)) for i, (name, values) in enumerate(methods_data.items()): values = values + values[:1] ax.plot(angles, values, 'o-', linewidth=2, label=name, color=OKABE_ITO[i%8]) ax.fill(angles, values, alpha=0.1, color=OKABE_ITO[i%8]) ax.设置_xticks(angles[:-1]); ax.设置_xticklabels(dimensions, fontsize=10) ax.设置_ylim(0, 10); ax.设置_yticks([2,4,6,8,10]) ax.legend(loc='upper right', bbox_to_anchor=(1.3, 1.1), fontsize=9) ax.grid(color='grey', linewidth=0.3, alpha=0.5) plt.tight_layout() plt.savefig(输出_path, dpi=300, bbox_inches='tight', facecolor='white') plt.savefig(输出_path.replace('.pdf','.png'), dpi=300, bbox_inches='tight', facecolor='white') plt.close()
# Interactive (plotly) def plot_radar_interactive(methods_data, dimensions, title="3DGS Method Comparison", 输出_path="radar_comparison.html"): fig = go.Figure() for i, (name, values) in enumerate(methods_data.items()): fig.添加_追踪(go.Scatterpolar( r=values+values[:1], theta=dimensions+dimensions[:1], fill='toself', name=name, line_color=OKABE_ITO[i%8], opacity=0.8)) fig.更新_layout(polar=dict(radialaxis=dict(visible=True, range=[0,10])), showlegend=True, title=dict(text=title), width=900, height=700) fig.write_html(输出_path)
可视化 2: Comparison Tables (Visual Performance Tables)
When to use: Summarizing quantitative 结果s across methods/data设置s; paper-ready tables with visual emphasis; efficiency vs 质量 trade-off.
Table Types Type Description Best For A: Quantitative Performance Color-coded cells (green=best, blue=second) Multi-data设置 metric comparison B: Efficiency-质量 Scatter FPS vs PSNR scatter with category coloring Speed/质量 trade-off analysis API — Type A: Performance Table def plot_comparison_table(data, methods, data设置s, metric="PSNR (dB)", higher_is_better=True, 输出_path="perf_table.pdf"): """data: 2D array [method][data设置]""" fig, ax = plt.subplots(figsize=(len(data设置s)1.8+2, len(methods)*0.6+1)) ax.axis('off') cell_text, cell_colors = [], [] for i in range(len(data设置s)): row, row_colors = [], [] col_vals = [data[k][i] for k in range(len(methods))] for j in range(len(methods)): val = data[j][i]; row.应用end(f"{val:.2f}") is_best = abs(val - (max if higher_is_better else min)(col_vals)) < 0.01 is_second = abs(val - 排序ed(col_vals, reverse=higher_is_better)[1]) < 0.01 if len(col_vals)>1 else False row_colo