Spaces:
Sleeping
Sleeping
Switch to Gradio app for direct external viewing
Browse files- 02_network_Chart2Code_level2_combination_3_v1/augmented.pdf +0 -0
- 02_network_Chart2Code_level2_combination_3_v1/augmented.png +0 -0
- 02_network_Chart2Code_level2_combination_3_v1/augmented_render.png +0 -0
- 02_network_Chart2Code_level2_combination_3_v1/img_iter1.png +0 -0
- 02_network_Chart2Code_level2_combination_3_v1/original.png +0 -0
- 03_surface3d_ChartNet-sample_2394253dc8502926/augmented.pdf +0 -0
- 04_box_Chart2NCode_0e7b573addd14f83aad26cf57f08876f/augmented.pdf +0 -0
- 04_box_Chart2NCode_0e7b573addd14f83aad26cf57f08876f/augmented_render.png +0 -0
- 04_box_Chart2NCode_0e7b573addd14f83aad26cf57f08876f/img_iter1.png +0 -0
- 04_box_Chart2NCode_0e7b573addd14f83aad26cf57f08876f/original_render.png +0 -0
- 06_radar_Chart2NCode_c372e9e299c44a6fa0506a700b87f9db/augmented.pdf +0 -0
- 07_violin_Chart2NCode_824d88ec85314c6ea8378d9e2e62e046/augmented.pdf +0 -0
- 08_tilemap_ChartNet-sample_15e07f5f51b5f852/augmented.pdf +0 -0
- 09_area_Chart2Code_level2_area_4_v5/augmented.pdf +0 -0
- 10_bar_Chart2NCode_0855bef1c82c44309116cd241d54254c/augmented.pdf +0 -0
- 10_bar_Chart2NCode_0855bef1c82c44309116cd241d54254c/augmented.png +0 -0
- 10_bar_Chart2NCode_0855bef1c82c44309116cd241d54254c/augmented_render.png +0 -0
- 10_bar_Chart2NCode_0855bef1c82c44309116cd241d54254c/img_iter1.png +0 -0
- 10_bar_Chart2NCode_0855bef1c82c44309116cd241d54254c/original_render.png +0 -0
- README.md +3 -4
- app.py +75 -0
02_network_Chart2Code_level2_combination_3_v1/augmented.pdf
CHANGED
|
Binary files a/02_network_Chart2Code_level2_combination_3_v1/augmented.pdf and b/02_network_Chart2Code_level2_combination_3_v1/augmented.pdf differ
|
|
|
02_network_Chart2Code_level2_combination_3_v1/augmented.png
CHANGED
|
|
Git LFS Details
|
02_network_Chart2Code_level2_combination_3_v1/augmented_render.png
CHANGED
|
|
Git LFS Details
|
02_network_Chart2Code_level2_combination_3_v1/img_iter1.png
CHANGED
|
|
Git LFS Details
|
02_network_Chart2Code_level2_combination_3_v1/original.png
CHANGED
|
|
Git LFS Details
|
03_surface3d_ChartNet-sample_2394253dc8502926/augmented.pdf
CHANGED
|
Binary files a/03_surface3d_ChartNet-sample_2394253dc8502926/augmented.pdf and b/03_surface3d_ChartNet-sample_2394253dc8502926/augmented.pdf differ
|
|
|
04_box_Chart2NCode_0e7b573addd14f83aad26cf57f08876f/augmented.pdf
CHANGED
|
Binary files a/04_box_Chart2NCode_0e7b573addd14f83aad26cf57f08876f/augmented.pdf and b/04_box_Chart2NCode_0e7b573addd14f83aad26cf57f08876f/augmented.pdf differ
|
|
|
04_box_Chart2NCode_0e7b573addd14f83aad26cf57f08876f/augmented_render.png
CHANGED
|
|
Git LFS Details
|
04_box_Chart2NCode_0e7b573addd14f83aad26cf57f08876f/img_iter1.png
CHANGED
|
|
Git LFS Details
|
04_box_Chart2NCode_0e7b573addd14f83aad26cf57f08876f/original_render.png
CHANGED
|
|
Git LFS Details
|
06_radar_Chart2NCode_c372e9e299c44a6fa0506a700b87f9db/augmented.pdf
CHANGED
|
Binary files a/06_radar_Chart2NCode_c372e9e299c44a6fa0506a700b87f9db/augmented.pdf and b/06_radar_Chart2NCode_c372e9e299c44a6fa0506a700b87f9db/augmented.pdf differ
|
|
|
07_violin_Chart2NCode_824d88ec85314c6ea8378d9e2e62e046/augmented.pdf
CHANGED
|
Binary files a/07_violin_Chart2NCode_824d88ec85314c6ea8378d9e2e62e046/augmented.pdf and b/07_violin_Chart2NCode_824d88ec85314c6ea8378d9e2e62e046/augmented.pdf differ
|
|
|
08_tilemap_ChartNet-sample_15e07f5f51b5f852/augmented.pdf
CHANGED
|
Binary files a/08_tilemap_ChartNet-sample_15e07f5f51b5f852/augmented.pdf and b/08_tilemap_ChartNet-sample_15e07f5f51b5f852/augmented.pdf differ
|
|
|
09_area_Chart2Code_level2_area_4_v5/augmented.pdf
CHANGED
|
Binary files a/09_area_Chart2Code_level2_area_4_v5/augmented.pdf and b/09_area_Chart2Code_level2_area_4_v5/augmented.pdf differ
|
|
|
10_bar_Chart2NCode_0855bef1c82c44309116cd241d54254c/augmented.pdf
CHANGED
|
Binary files a/10_bar_Chart2NCode_0855bef1c82c44309116cd241d54254c/augmented.pdf and b/10_bar_Chart2NCode_0855bef1c82c44309116cd241d54254c/augmented.pdf differ
|
|
|
10_bar_Chart2NCode_0855bef1c82c44309116cd241d54254c/augmented.png
CHANGED
|
|
Git LFS Details
|
10_bar_Chart2NCode_0855bef1c82c44309116cd241d54254c/augmented_render.png
CHANGED
|
|
Git LFS Details
|
10_bar_Chart2NCode_0855bef1c82c44309116cd241d54254c/img_iter1.png
CHANGED
|
|
Git LFS Details
|
10_bar_Chart2NCode_0855bef1c82c44309116cd241d54254c/original_render.png
CHANGED
|
|
Git LFS Details
|
README.md
CHANGED
|
@@ -1,9 +1,10 @@
|
|
| 1 |
---
|
| 2 |
title: FigMirror Code Augmentation 10 Cases
|
| 3 |
-
emoji: 📊
|
| 4 |
colorFrom: green
|
| 5 |
colorTo: gray
|
| 6 |
-
sdk:
|
|
|
|
|
|
|
| 7 |
pinned: false
|
| 8 |
license: mit
|
| 9 |
---
|
|
@@ -14,5 +15,3 @@ Each case compares two code-generated figures:
|
|
| 14 |
|
| 15 |
- left: fresh render from unchanged `original.py`
|
| 16 |
- right: fresh render from `augmented.py`, preserving the same data/chart topology while applying FigMirror-style presentation improvements
|
| 17 |
-
|
| 18 |
-
Open `index.html` in the Space app view.
|
|
|
|
| 1 |
---
|
| 2 |
title: FigMirror Code Augmentation 10 Cases
|
|
|
|
| 3 |
colorFrom: green
|
| 4 |
colorTo: gray
|
| 5 |
+
sdk: gradio
|
| 6 |
+
sdk_version: 5.33.0
|
| 7 |
+
app_file: app.py
|
| 8 |
pinned: false
|
| 9 |
license: mit
|
| 10 |
---
|
|
|
|
| 15 |
|
| 16 |
- left: fresh render from unchanged `original.py`
|
| 17 |
- right: fresh render from `augmented.py`, preserving the same data/chart topology while applying FigMirror-style presentation improvements
|
|
|
|
|
|
app.py
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
import base64
|
| 4 |
+
from pathlib import Path
|
| 5 |
+
import html
|
| 6 |
+
import gradio as gr
|
| 7 |
+
|
| 8 |
+
ROOT = Path(__file__).resolve().parent
|
| 9 |
+
REPO = "https://huggingface.co/spaces/zcahjl3/figmirror-code-aug10"
|
| 10 |
+
|
| 11 |
+
CSS = """
|
| 12 |
+
<style>
|
| 13 |
+
body { margin: 0; }
|
| 14 |
+
.fm-wrap { font-family: Arial, sans-serif; color: #172033; background: #f5f6f8; padding: 0 0 28px; }
|
| 15 |
+
.fm-header { background: #fff; border-bottom: 1px solid #d9dee7; padding: 22px 28px; }
|
| 16 |
+
.fm-header h1 { margin: 0 0 8px; font-size: 25px; line-height: 1.2; }
|
| 17 |
+
.fm-header p { margin: 0; color: #667085; font-size: 13px; line-height: 1.45; max-width: 1050px; }
|
| 18 |
+
.fm-main { padding: 20px 28px; display: grid; gap: 18px; }
|
| 19 |
+
.fm-card { background: #fff; border: 1px solid #d9dee7; border-radius: 8px; padding: 14px; }
|
| 20 |
+
.fm-card h2 { margin: 0 0 10px; font-size: 15px; }
|
| 21 |
+
.fm-card img { width: 100%; max-height: 720px; object-fit: contain; display: block; border: 1px solid #e5e7eb; background: #fff; }
|
| 22 |
+
.fm-card p { margin: 8px 0; color: #667085; font-size: 12px; line-height: 1.45; }
|
| 23 |
+
.fm-links { display: flex; flex-wrap: wrap; gap: 8px 14px; }
|
| 24 |
+
.fm-links a { color: #0b61a4; text-decoration: none; font-size: 12px; }
|
| 25 |
+
.fm-links a:hover { text-decoration: underline; }
|
| 26 |
+
code { background: #f2f4f7; padding: 1px 4px; border-radius: 4px; }
|
| 27 |
+
</style>
|
| 28 |
+
"""
|
| 29 |
+
|
| 30 |
+
|
| 31 |
+
def image_data(path: Path) -> str:
|
| 32 |
+
data = base64.b64encode(path.read_bytes()).decode("ascii")
|
| 33 |
+
return f"data:image/png;base64,{data}"
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
def rel_url(slug: str, filename: str) -> str:
|
| 37 |
+
return f"{REPO}/resolve/main/{slug}/{filename}"
|
| 38 |
+
|
| 39 |
+
|
| 40 |
+
def build_html() -> str:
|
| 41 |
+
cases = sorted(p for p in ROOT.iterdir() if p.is_dir() and (p / "comparison.png").exists())
|
| 42 |
+
cards = []
|
| 43 |
+
for case in cases:
|
| 44 |
+
slug = case.name
|
| 45 |
+
parts = slug.split("_", 2)
|
| 46 |
+
chart_type = html.escape(parts[1] if len(parts) > 1 else slug)
|
| 47 |
+
label = html.escape(parts[2] if len(parts) > 2 else slug)
|
| 48 |
+
img = image_data(case / "comparison.png")
|
| 49 |
+
cards.append(f"""
|
| 50 |
+
<article class="fm-card">
|
| 51 |
+
<h2>{chart_type} · {label}</h2>
|
| 52 |
+
<img src="{img}" alt="Original code render versus data-preserving FigMirror code augmentation">
|
| 53 |
+
<p>Both sides are generated from code. Left: unchanged <code>original.py</code>. Right: <code>augmented.py</code>, preserving the same data and chart topology while improving figure aesthetics.</p>
|
| 54 |
+
<p class="fm-links">
|
| 55 |
+
<a href="{rel_url(slug, 'original_render.png')}" target="_blank">original render</a>
|
| 56 |
+
<a href="{rel_url(slug, 'original.py')}" target="_blank">original code</a>
|
| 57 |
+
<a href="{rel_url(slug, 'augmented_render.png')}" target="_blank">augmented render</a>
|
| 58 |
+
<a href="{rel_url(slug, 'augmented.py')}" target="_blank">augmented code</a>
|
| 59 |
+
<a href="{rel_url(slug, 'comparison.png')}" target="_blank">comparison PNG</a>
|
| 60 |
+
</p>
|
| 61 |
+
</article>""")
|
| 62 |
+
return CSS + f"""
|
| 63 |
+
<div class="fm-wrap">
|
| 64 |
+
<header class="fm-header">
|
| 65 |
+
<h1>FigMirror Data-Preserving Code Augmentation - 10 Cases</h1>
|
| 66 |
+
<p>Each case compares two code-generated images. The right-hand figure is not a new task: it keeps the original data, labels, chart type/topology, and analytical relation, then applies FigMirror presentation improvements.</p>
|
| 67 |
+
</header>
|
| 68 |
+
<main class="fm-main">{''.join(cards)}</main>
|
| 69 |
+
</div>"""
|
| 70 |
+
|
| 71 |
+
with gr.Blocks(title="FigMirror Code Augmentation") as demo:
|
| 72 |
+
gr.HTML(build_html())
|
| 73 |
+
|
| 74 |
+
if __name__ == "__main__":
|
| 75 |
+
demo.launch()
|