| import pandas as pd |
| import matplotlib.pyplot as plt |
| import seaborn as sns |
| from pathlib import Path |
|
|
| |
| plt.rcParams.update({'font.size': 12, 'pdf.fonttype': 42, 'ps.fonttype': 42}) |
| sns.set_theme(style="whitegrid", context="paper") |
|
|
| OUT_DIR = Path("/root/autodl-tmp/SplatAtlas/outputs/surfel_hypothesis_7tnt_all/") |
| df_method = pd.read_csv(OUT_DIR / "method_mean_7tnt.csv") |
| df_scene = pd.read_csv(OUT_DIR / "scene_mean_7tnt.csv") |
|
|
| |
| df_v3 = df_method.dropna(subset=['v3_normal_median_deg', 'center_pca_normal_median_deg']).copy() |
|
|
| |
| |
| |
| plt.figure(figsize=(6, 5)) |
| ax = sns.scatterplot( |
| data=df_v3, x='center_pca_normal_median_deg', y='v3_normal_median_deg', |
| hue='group', style='group', s=80, alpha=0.8, palette="deep" |
| ) |
| |
| lims = [10, 65] |
| plt.plot(lims, lims, '--', color='gray', zorder=0) |
| plt.fill_between(lims, lims, 70, color='red', alpha=0.05, zorder=0) |
| plt.fill_between(lims, 0, lims, color='green', alpha=0.05, zorder=0) |
|
|
| plt.title("Covariance Orientation vs. Center PCA Normal") |
| plt.xlabel("Center-PCA Normal Median Error (deg)") |
| plt.ylabel("V3 Covariance Normal Median Error (deg)") |
| plt.xlim(10, 65) |
| plt.ylim(25, 70) |
| plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', title="Method Group") |
| plt.text(12, 60, "V3 is Worse", color='red', fontsize=12, fontweight='bold', alpha=0.5) |
| plt.text(50, 30, "V3 is Better", color='green', fontsize=12, fontweight='bold', alpha=0.5) |
|
|
| plt.tight_layout() |
| plt.savefig(OUT_DIR / "Fig1_V3_vs_PCA_Scatter.pdf", bbox_inches='tight') |
| print(f"✅ Saved Fig 1 to {OUT_DIR / 'Fig1_V3_vs_PCA_Scatter.pdf'}") |
|
|
| |
| |
| |
| plt.figure(figsize=(7, 4)) |
| df_scene_sorted = df_scene.sort_values(by='surface_near_ratio', ascending=False) |
| sns.barplot(data=df_scene_sorted, x='scene', y='surface_near_ratio', palette="viridis") |
| plt.title("Proximity of Gaussian Centers to True Surface Across Scenes") |
| plt.xlabel("Tanks & Temples Scene") |
| plt.ylabel("Surface-Near Ratio ($< 2\\tau$)") |
| plt.axhline(y=df_scene['surface_near_ratio'].mean(), color='r', linestyle='--', label='Global Mean') |
| plt.legend() |
|
|
| plt.tight_layout() |
| plt.savefig(OUT_DIR / "Fig2_Surface_Proximity_Bar.pdf") |
| print(f"✅ Saved Fig 2 to {OUT_DIR / 'Fig2_Surface_Proximity_Bar.pdf'}") |
|
|