Files
wehub-resource-sync 8cb1f9f479
Publish SDK (PyPI) / publish (push) Has been cancelled
Publish SDK (npm) / publish (@aionui/officecli-sdk) (push) Has been cancelled
SDK smoke / smoke (windows-latest) (push) Has been cancelled
Publish SDK (npm) / publish (@officecli/officecli-sdk) (push) Has been cancelled
Publish SDK (npm) / publish (@officecli/sdk) (push) Has been cancelled
Publish SDK (npm) / publish (officecli-sdk) (push) Has been cancelled
SDK smoke / smoke (macos-latest) (push) Has been cancelled
SDK smoke / smoke (ubuntu-latest) (push) Has been cancelled
Skill parity / diff (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:09:29 +08:00

411 lines
16 KiB
Bash
Executable File

#!/bin/bash
# Scatter Charts Showcase — scatter with all marker, trendline, error bar, and
# styling variations. CLI twin of charts-scatter.py (officecli Python SDK).
# Both produce an equivalent charts-scatter.xlsx.
#
# 6 sheets, 24 charts total:
# 1-Scatter Fundamentals basic scatter, marker-only, smooth curve, line-only
# 2-Marker Styles per-series markers, shapes, sizes, toggle
# 3-Trendlines linear, polynomial, exponential, per-series
# 4-Error Bars fixed, percent, stddev, stderr
# 5-Styling title/shadow, gradients, axis/grid, borders
# 6-Advanced secondary axis, reference line, log scale, color rule
#
# Usage: ./charts-scatter.sh [officecli path]
# NOTE: intentionally NO `set -e`. Like the SDK twin's doc.batch, this script
# tolerates forward-compat 'UNSUPPORTED props' warnings (officecli exit 2) and
# keeps building so the full document is produced.
CLI="${1:-officecli}"
FILE="$(dirname "$0")/charts-scatter.xlsx"
rm -f "$FILE"
$CLI create "$FILE"
$CLI open "$FILE"
# ==========================================================================
# Sheet: 1-Scatter Fundamentals
# ==========================================================================
$CLI add "$FILE" / --type sheet --prop name="1-Scatter Fundamentals"
# Chart 1: Basic scatter with circle markers and connecting lines
$CLI add "$FILE" "/1-Scatter Fundamentals" --type chart \
--prop chartType=scatter \
--prop title="Height vs Weight" \
--prop categories=160,165,170,175,180,185,190 \
--prop series1="Male:62,68,72,78,82,88,95" \
--prop series2="Female:50,55,58,62,65,70,74" \
--prop colors=2E75B6,ED7D31 \
--prop x=0 --prop y=0 --prop width=12 --prop height=18 \
--prop marker=circle --prop markerSize=6 \
--prop lineWidth=1.5 \
--prop catTitle="Height (cm)" --prop axisTitle="Weight (kg)" \
--prop legend=bottom
# Chart 2: Scatter marker-only (scatterStyle=marker), various marker sizes
$CLI add "$FILE" "/1-Scatter Fundamentals" --type chart \
--prop chartType=scatter \
--prop scatterStyle=marker \
--prop title="Study Hours vs Test Score" \
--prop categories=1,2,3,4,5,6,7,8 \
--prop series1="Class A:55,60,65,72,78,82,88,92" \
--prop series2="Class B:50,58,62,68,74,80,85,90" \
--prop colors=4472C4,70AD47 \
--prop x=13 --prop y=0 --prop width=12 --prop height=18 \
--prop markerSize=8 \
--prop catTitle="Study Hours" --prop axisTitle=Score \
--prop gridlines=D9D9D9:0.5:dot
# Chart 3: Scatter smooth curve (smooth=true, scatterStyle=smooth)
$CLI add "$FILE" "/1-Scatter Fundamentals" --type chart \
--prop chartType=scatter \
--prop scatterStyle=smooth \
--prop smooth=true \
--prop title="Temperature vs Ice Cream Sales" \
--prop categories=15,18,22,25,28,30,33,35 \
--prop series1="Sales (\$):120,180,260,340,420,480,530,560" \
--prop colors=C00000 \
--prop x=0 --prop y=19 --prop width=12 --prop height=18 \
--prop marker=diamond --prop markerSize=7 \
--prop lineWidth=2 \
--prop catTitle="Temperature (C)" --prop axisTitle="Daily Sales (\$)"
# Chart 4: Scatter line-only (no markers, scatterStyle=line)
$CLI add "$FILE" "/1-Scatter Fundamentals" --type chart \
--prop chartType=scatter \
--prop scatterStyle=line \
--prop title="Altitude vs Air Pressure" \
--prop categories=0,500,1000,2000,3000,5000,8000 \
--prop series1="Pressure (hPa):1013,955,899,795,701,540,356" \
--prop colors=1F4E79 \
--prop x=13 --prop y=19 --prop width=12 --prop height=18 \
--prop showMarker=false \
--prop lineWidth=2.5 \
--prop lineDash=dash \
--prop catTitle="Altitude (m)" --prop axisTitle="Pressure (hPa)"
# ==========================================================================
# Sheet: 2-Marker Styles
# ==========================================================================
$CLI add "$FILE" / --type sheet --prop name="2-Marker Styles"
# Chart 1: Per-series markers — circle, diamond, square
$CLI add "$FILE" "/2-Marker Styles" --type chart \
--prop chartType=scatter \
--prop title="Per-Series Markers: Circle, Diamond, Square" \
--prop categories=10,20,30,40,50,60 \
--prop series1="Sensor A:12,28,35,42,55,68" \
--prop series2="Sensor B:8,22,30,38,48,58" \
--prop series3="Sensor C:15,25,32,45,52,62" \
--prop colors=4472C4,ED7D31,70AD47 \
--prop x=0 --prop y=0 --prop width=12 --prop height=18 \
--prop series1.marker=circle \
--prop series2.marker=diamond \
--prop series3.marker=square \
--prop markerSize=8 --prop lineWidth=1 \
--prop legend=bottom
# Chart 2: Per-series markers — triangle, star, x
$CLI add "$FILE" "/2-Marker Styles" --type chart \
--prop chartType=scatter \
--prop title="Per-Series Markers: Triangle, Star, X" \
--prop categories=5,10,15,20,25,30 \
--prop series1="Lab 1:18,32,28,45,52,60" \
--prop series2="Lab 2:22,25,38,40,48,55" \
--prop series3="Lab 3:10,20,32,35,42,50" \
--prop colors=FFC000,9DC3E6,843C0B \
--prop x=13 --prop y=0 --prop width=12 --prop height=18 \
--prop series1.marker=triangle \
--prop series2.marker=star \
--prop series3.marker=x \
--prop markerSize=9 --prop lineWidth=1 \
--prop legend=bottom
# Chart 3: Large markers with series colors, markerSize=10
$CLI add "$FILE" "/2-Marker Styles" --type chart \
--prop chartType=scatter \
--prop scatterStyle=marker \
--prop title="Large Markers (size=10)" \
--prop categories=100,200,300,400,500 \
--prop series1="Revenue:150,280,350,420,510" \
--prop series2="Profit:80,140,180,220,280" \
--prop series3="Cost:70,140,170,200,230" \
--prop colors=2E75B6,548235,BF8F00 \
--prop x=0 --prop y=19 --prop width=12 --prop height=18 \
--prop series1.marker=circle \
--prop series2.marker=plus \
--prop series3.marker=dash \
--prop markerSize=10 \
--prop legend=right
# Chart 4: showMarker=false (line only) vs showMarker=true
$CLI add "$FILE" "/2-Marker Styles" --type chart \
--prop chartType=scatter \
--prop scatterStyle=lineMarker \
--prop title="Marker Toggle (none shown)" \
--prop categories=1,2,3,4,5,6,7,8,9,10 \
--prop series1="Signal:3,7,5,11,9,14,12,18,15,20" \
--prop series2="Noise:2,4,6,5,8,7,10,9,12,11" \
--prop colors=4472C4,BFBFBF \
--prop x=13 --prop y=19 --prop width=12 --prop height=18 \
--prop showMarker=false \
--prop lineWidth=2 \
--prop lineDash=dashDot \
--prop legend=bottom
# ==========================================================================
# Sheet: 3-Trendlines
# ==========================================================================
$CLI add "$FILE" / --type sheet --prop name="3-Trendlines"
# Chart 1: Linear trendline with equation display
$CLI add "$FILE" "/3-Trendlines" --type chart \
--prop chartType=scatter \
--prop scatterStyle=marker \
--prop title="Linear Trendline + Equation" \
--prop categories=1,2,3,4,5,6,7,8,9,10 \
--prop series1="Observed:8,15,22,28,33,42,48,55,60,68" \
--prop colors=4472C4 \
--prop x=0 --prop y=0 --prop width=12 --prop height=18 \
--prop markerSize=7 \
--prop trendline=linear \
--prop series1.trendline.equation=true \
--prop catTitle=X --prop axisTitle=Y
# Chart 2: Polynomial trendline (order 3) with R-squared display
$CLI add "$FILE" "/3-Trendlines" --type chart \
--prop chartType=scatter \
--prop scatterStyle=marker \
--prop title="Polynomial (order 3) + R-squared" \
--prop categories=1,2,3,4,5,6,7,8,9,10 \
--prop series1="Measurement:5,12,25,30,28,35,50,62,58,72" \
--prop colors=70AD47 \
--prop x=13 --prop y=0 --prop width=12 --prop height=18 \
--prop markerSize=7 --prop marker=square \
--prop trendline=poly:3 \
--prop series1.trendline.rsquared=true \
--prop catTitle=Sample --prop axisTitle=Value
# Chart 3: Exponential trendline with forward/backward extrapolation
$CLI add "$FILE" "/3-Trendlines" --type chart \
--prop chartType=scatter \
--prop scatterStyle=marker \
--prop title="Exponential + Extrapolation" \
--prop categories=1,2,3,4,5,6,7,8 \
--prop series1="Growth:2,4,7,12,20,35,58,95" \
--prop colors=ED7D31 \
--prop x=0 --prop y=19 --prop width=12 --prop height=18 \
--prop markerSize=7 --prop marker=triangle \
--prop trendline=exp:2:1 \
--prop series1.trendline.name="Exponential Fit" \
--prop catTitle=Period --prop axisTitle=Amount
# Chart 4: Per-series trendlines — linear vs logarithmic
$CLI add "$FILE" "/3-Trendlines" --type chart \
--prop chartType=scatter \
--prop scatterStyle=marker \
--prop title="Per-Series: Linear vs Logarithmic" \
--prop categories=1,2,4,8,16,32,64 \
--prop series1="Dataset A:10,18,30,45,62,78,95" \
--prop series2="Dataset B:5,25,38,45,50,54,56" \
--prop colors=4472C4,C00000 \
--prop x=13 --prop y=19 --prop width=12 --prop height=18 \
--prop markerSize=7 \
--prop series1.trendline=linear \
--prop series2.trendline=log \
--prop series1.trendline.equation=true \
--prop series2.trendline.rsquared=true \
--prop legend=bottom
# ==========================================================================
# Sheet: 4-Error Bars
# ==========================================================================
$CLI add "$FILE" / --type sheet --prop name="4-Error Bars"
# Chart 1: Fixed error bars (errBars=fixed:5)
$CLI add "$FILE" "/4-Error Bars" --type chart \
--prop chartType=scatter \
--prop title="Fixed Error Bars (+-5)" \
--prop categories=10,20,30,40,50,60 \
--prop series1="Measurement:25,42,58,72,88,105" \
--prop colors=4472C4 \
--prop x=0 --prop y=0 --prop width=12 --prop height=18 \
--prop marker=circle --prop markerSize=7 \
--prop lineWidth=1 \
--prop errBars=fixed:5 \
--prop catTitle=Input --prop axisTitle=Output
# Chart 2: Percentage error bars (errBars=percent:10)
$CLI add "$FILE" "/4-Error Bars" --type chart \
--prop chartType=scatter \
--prop title="Percentage Error Bars (10%)" \
--prop categories=5,10,15,20,25,30 \
--prop series1="Yield:120,185,240,310,375,450" \
--prop colors=70AD47 \
--prop x=13 --prop y=0 --prop width=12 --prop height=18 \
--prop marker=diamond --prop markerSize=7 \
--prop lineWidth=1 \
--prop errBars=percent:10 \
--prop catTitle=Dosage --prop axisTitle=Yield
# Chart 3: Standard deviation error bars (errBars=stddev)
$CLI add "$FILE" "/4-Error Bars" --type chart \
--prop chartType=scatter \
--prop title="Standard Deviation Error Bars" \
--prop categories=0,1,2,3,4,5,6,7 \
--prop series1="Trial 1:48,52,47,55,50,53,49,51" \
--prop series2="Trial 2:30,35,28,40,32,38,34,36" \
--prop colors=ED7D31,9DC3E6 \
--prop x=0 --prop y=19 --prop width=12 --prop height=18 \
--prop marker=square --prop markerSize=6 \
--prop lineWidth=1 \
--prop errBars=stddev \
--prop legend=bottom
# Chart 4: Standard error with series styling
$CLI add "$FILE" "/4-Error Bars" --type chart \
--prop chartType=scatter \
--prop title="Standard Error + Styled Series" \
--prop categories=2,4,6,8,10,12,14 \
--prop series1="Experiment:18,32,28,45,40,55,52" \
--prop colors=843C0B \
--prop x=13 --prop y=19 --prop width=12 --prop height=18 \
--prop marker=star --prop markerSize=8 \
--prop lineWidth=1.5 \
--prop errBars=stderr \
--prop series.shadow=000000-4-315-2-30 \
--prop gridlines=D9D9D9:0.5:dot \
--prop catTitle="Time (h)" --prop axisTitle=Response
# ==========================================================================
# Sheet: 5-Styling
# ==========================================================================
$CLI add "$FILE" / --type sheet --prop name="5-Styling"
# Chart 1: Title styling, series shadow, series outline
$CLI add "$FILE" "/5-Styling" --type chart \
--prop chartType=scatter \
--prop title="Styled Title + Series Effects" \
--prop categories=10,20,30,40,50 \
--prop series1="Alpha:15,35,28,48,55" \
--prop series2="Beta:8,22,32,40,50" \
--prop colors=4472C4,ED7D31 \
--prop x=0 --prop y=0 --prop width=12 --prop height=18 \
--prop marker=circle --prop markerSize=8 --prop lineWidth=2 \
--prop title.font=Georgia --prop title.size=16 \
--prop title.color=1F4E79 --prop title.bold=true \
--prop title.shadow=000000-3-315-2-30 \
--prop series.shadow=000000-4-315-2-30 \
--prop series.outline=333333:1.5 \
--prop legend=bottom
# Chart 2: Gradients, transparency, plotFill, chartFill
$CLI add "$FILE" "/5-Styling" --type chart \
--prop chartType=scatter \
--prop title="Gradients + Fills" \
--prop categories=5,15,25,35,45 \
--prop series1="Group 1:12,28,35,42,55" \
--prop series2="Group 2:8,18,22,38,48" \
--prop x=13 --prop y=0 --prop width=12 --prop height=18 \
--prop marker=diamond --prop markerSize=8 --prop lineWidth=1.5 \
--prop "gradients=4472C4-BDD7EE:90;ED7D31-FBE5D6:90" \
--prop transparency=20 \
--prop plotFill=F5F5F5 \
--prop chartFill=FAFAFA \
--prop legend=bottom
# Chart 3: Axis font, gridlines, minor gridlines, axis line
$CLI add "$FILE" "/5-Styling" --type chart \
--prop chartType=scatter \
--prop title="Axis & Grid Styling" \
--prop categories=0,10,20,30,40,50 \
--prop series1="Readings:5,22,38,52,68,82" \
--prop colors=2E75B6 \
--prop x=0 --prop y=19 --prop width=12 --prop height=18 \
--prop marker=circle --prop markerSize=7 --prop lineWidth=1.5 \
--prop axisfont=9:C00000:Arial \
--prop gridlines=BFBFBF:0.75:solid \
--prop minorGridlines=E0E0E0:0.25:dot \
--prop axisLine=333333:1 \
--prop catTitle="X Axis" --prop axisTitle="Y Axis"
# Chart 4: Chart area border, plot area border, rounded corners
$CLI add "$FILE" "/5-Styling" --type chart \
--prop chartType=scatter \
--prop title="Borders + Rounded Corners" \
--prop categories=1,3,5,7,9 \
--prop series1="Data:10,25,18,35,28" \
--prop colors=548235 \
--prop x=13 --prop y=19 --prop width=12 --prop height=18 \
--prop marker=square --prop markerSize=8 --prop lineWidth=1.5 \
--prop chartArea.border=333333:1.5 \
--prop plotArea.border=999999:0.75 \
--prop roundedCorners=true \
--prop chartFill=FFFFFF \
--prop plotFill=F0F0F0
# ==========================================================================
# Sheet: 6-Advanced
# ==========================================================================
$CLI add "$FILE" / --type sheet --prop name="6-Advanced"
# Chart 1: Secondary axis
$CLI add "$FILE" "/6-Advanced" --type chart \
--prop chartType=scatter \
--prop title="Secondary Y-Axis" \
--prop categories=10,20,30,40,50,60 \
--prop series1="Temperature (C):15,20,28,32,38,42" \
--prop series2="Humidity (%):85,78,65,58,45,38" \
--prop colors=C00000,4472C4 \
--prop x=0 --prop y=0 --prop width=12 --prop height=18 \
--prop marker=circle --prop markerSize=7 --prop lineWidth=1.5 \
--prop secondaryAxis=2 \
--prop legend=bottom \
--prop catTitle=Location
# Chart 2: Reference line (horizontal target)
$CLI add "$FILE" "/6-Advanced" --type chart \
--prop chartType=scatter \
--prop title="Reference Line (Target=75)" \
--prop categories=1,2,3,4,5,6,7,8 \
--prop series1="Score:60,68,72,78,80,74,82,88" \
--prop colors=70AD47 \
--prop x=13 --prop y=0 --prop width=12 --prop height=18 \
--prop marker=diamond --prop markerSize=7 --prop lineWidth=1.5 \
--prop referenceLine=75:FF0000:Target:dash \
--prop catTitle=Week --prop axisTitle=Performance
# Chart 3: Axis min/max and log scale
$CLI add "$FILE" "/6-Advanced" --type chart \
--prop chartType=scatter \
--prop title="Log Scale (base 10)" \
--prop categories=1,10,100,1000,10000 \
--prop series1="Response:2,15,120,950,8500" \
--prop colors=1F4E79 \
--prop x=0 --prop y=19 --prop width=12 --prop height=18 \
--prop marker=triangle --prop markerSize=8 --prop lineWidth=1.5 \
--prop logBase=10 \
--prop axisMin=1 --prop axisMax=10000 \
--prop catTitle=Concentration --prop axisTitle=Response
# Chart 4: Data labels and color rule
$CLI add "$FILE" "/6-Advanced" --type chart \
--prop chartType=scatter \
--prop scatterStyle=marker \
--prop title="Data Labels + Color Rule" \
--prop categories=1,2,3,4,5,6,7,8 \
--prop series1="KPI:45,62,38,78,55,82,48,90" \
--prop colors=4472C4 \
--prop x=13 --prop y=19 --prop width=12 --prop height=18 \
--prop markerSize=9 \
--prop dataLabels=true --prop labelPos=top \
--prop colorRule=60:C00000:00AA00 \
--prop catTitle=Quarter --prop axisTitle="KPI Score"
# Remove blank default Sheet1 (all data is inline)
$CLI remove "$FILE" /Sheet1
$CLI close "$FILE"
$CLI validate "$FILE"
echo "Generated: $FILE"