@topmindspace/tms-skills 2.0.0 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +139 -123
- package/README.md +126 -103
- package/bin/tms-skills.js +160 -160
- package/package.json +48 -48
- package/top-ppt-html/README.md +254 -253
- package/top-ppt-html/SKILL.md +111 -111
- package/top-ppt-html/assets/examples/2026-09-09-architecture-graphite-dark.html +3873 -3926
- package/top-ppt-html/assets/examples/2026-09-09-architecture-graphite-dark.model.json +167 -167
- package/top-ppt-html/assets/examples/2026-09-09-architecture-spectrum.html +3873 -3926
- package/top-ppt-html/assets/examples/2026-09-09-architecture-spectrum.model.json +167 -167
- package/top-ppt-html/assets/examples/2026-09-09-presentation-apple-mono.html +4272 -4325
- package/top-ppt-html/assets/examples/2026-09-09-presentation-apple-mono.model.json +320 -320
- package/top-ppt-html/assets/examples/2026-09-09-presentation-brand-red.html +4272 -4325
- package/top-ppt-html/assets/examples/2026-09-09-presentation-brand-red.model.json +320 -320
- package/top-ppt-html/assets/examples/2026-09-09-presentation-business-blue.html +4272 -4325
- package/top-ppt-html/assets/examples/2026-09-09-presentation-business-blue.model.json +320 -320
- package/top-ppt-html/assets/examples/2026-09-09-research-deep-teal.html +5474 -5527
- package/top-ppt-html/assets/examples/2026-09-09-research-deep-teal.model.json +913 -913
- package/top-ppt-html/assets/examples/2026-09-09-research-indigo-violet.html +5474 -5527
- package/top-ppt-html/assets/examples/2026-09-09-research-indigo-violet.model.json +913 -913
- package/top-ppt-html/assets/examples/2026-09-09-research-mckinsey.html +5474 -5527
- package/top-ppt-html/assets/examples/2026-09-09-research-mckinsey.model.json +913 -913
- package/top-ppt-html/assets/examples/2026-09-09-research-warm-sand.html +5474 -5527
- package/top-ppt-html/assets/examples/2026-09-09-research-warm-sand.model.json +913 -913
- package/top-ppt-html/assets/pptx-export.js +1944 -1944
- package/top-ppt-html/assets/style-gallery.html +559 -589
- package/top-ppt-html/assets/templates/architecture.html +3675 -3728
- package/top-ppt-html/assets/templates/engine.css +787 -840
- package/top-ppt-html/assets/templates/presentation.html +3685 -3738
- package/top-ppt-html/assets/templates/research.html +3964 -4017
- package/top-ppt-html/assets/templates/ui.js +520 -520
- package/top-ppt-html/assets/theme-overview-architecture.png +0 -0
- package/top-ppt-html/assets/theme-overview-presentation.png +0 -0
- package/top-ppt-html/assets/theme-overview-research.png +0 -0
- package/top-ppt-html/assets/theme-overview.png +0 -0
- package/top-ppt-html/evals/prompts.csv +15 -15
- package/top-ppt-html/evals/rubric.schema.json +25 -25
- package/top-ppt-html/evals/run_evals.py +220 -220
- package/top-ppt-html/evals/trace.example.json +16 -16
- package/top-ppt-html/package-lock.json +175 -0
- package/top-ppt-html/package.json +30 -35
- package/top-ppt-html/references/charts-basic.md +624 -624
- package/top-ppt-html/references/charts-discipline.md +108 -108
- package/top-ppt-html/references/charts-extended.md +482 -482
- package/top-ppt-html/references/charts.md +28 -28
- package/top-ppt-html/references/components-atoms.md +624 -624
- package/top-ppt-html/references/components.md +30 -30
- package/top-ppt-html/references/content-rules.md +490 -490
- package/top-ppt-html/references/design-system-engine.md +235 -235
- package/top-ppt-html/references/design-system.md +471 -478
- package/top-ppt-html/references/failure-modes.md +214 -214
- package/top-ppt-html/references/high-fidelity.md +127 -127
- package/top-ppt-html/references/icons.md +397 -397
- package/top-ppt-html/references/industry-benchmark.md +105 -105
- package/top-ppt-html/references/infographics-stats.md +308 -308
- package/top-ppt-html/references/infographics-structure.md +226 -226
- package/top-ppt-html/references/infographics.md +43 -43
- package/top-ppt-html/references/layout-grammar.md +315 -315
- package/top-ppt-html/references/layouts-architecture.md +108 -108
- package/top-ppt-html/references/layouts-combo.md +600 -600
- package/top-ppt-html/references/layouts-research.md +160 -160
- package/top-ppt-html/references/modes.md +254 -254
- package/top-ppt-html/references/outline-design.md +275 -275
- package/top-ppt-html/references/playbook.md +266 -266
- package/top-ppt-html/references/pptx-export.md +209 -209
- package/top-ppt-html/references/reform-plan.md +252 -252
- package/top-ppt-html/references/styles.md +336 -370
- package/top-ppt-html/references/tech-design.md +138 -138
- package/top-ppt-html/scripts/audit_css.py +109 -109
- package/top-ppt-html/scripts/audit_docs.py +176 -176
- package/top-ppt-html/scripts/audit_skill.py +220 -220
- package/top-ppt-html/scripts/audit_styles.py +293 -351
- package/top-ppt-html/scripts/build_examples.py +2276 -2276
- package/top-ppt-html/scripts/build_pptx.js +2380 -2380
- package/top-ppt-html/scripts/capture_theme_overview.js +78 -78
- package/top-ppt-html/scripts/checks_html.py +127 -127
- package/top-ppt-html/scripts/cross_verify.py +294 -294
- package/top-ppt-html/scripts/env_probe.py +158 -158
- package/top-ppt-html/scripts/extract_model.py +210 -210
- package/top-ppt-html/scripts/extract_snippet.py +374 -374
- package/top-ppt-html/scripts/gen_channel_a.js +214 -214
- package/top-ppt-html/scripts/layout-constants.json +3309 -3377
- package/top-ppt-html/scripts/layout_slots.json +830 -830
- package/top-ppt-html/scripts/lib_layout_regions.js +412 -412
- package/top-ppt-html/scripts/measure_height.py +178 -178
- package/top-ppt-html/scripts/model-schema.json +547 -547
- package/top-ppt-html/scripts/negative_tests.py +307 -307
- package/top-ppt-html/scripts/package_skill.py +291 -291
- package/top-ppt-html/scripts/prepare_images.py +341 -341
- package/top-ppt-html/scripts/probe_image_export.py +188 -188
- package/top-ppt-html/scripts/quality_gate.py +301 -301
- package/top-ppt-html/scripts/regression.py +307 -308
- package/top-ppt-html/scripts/render_compare.py +275 -275
- package/top-ppt-html/scripts/render_from_model.py +698 -698
- package/top-ppt-html/scripts/scaffold_report.py +1054 -1054
- package/top-ppt-html/scripts/section-file-map.json +104 -104
- package/top-ppt-html/scripts/sync_runtime.py +662 -662
- package/top-ppt-html/scripts/validate_pptx.py +1510 -1510
- package/top-ppt-html/scripts/validate_report.py +1456 -1456
|
@@ -1,482 +1,482 @@
|
|
|
1
|
-
# 图表全库 · charts-extended.md
|
|
2
|
-
|
|
3
|
-
> 由 `charts.md` 拆出(§编号保持不变,跨文件稳定引用)。
|
|
4
|
-
> 取码:`python scripts/extract_snippet.py --file charts.md --section <编号>`
|
|
5
|
-
> 或直接 `--file charts-extended.md --section <编号>`。整读大文件视为违规。
|
|
6
|
-
|
|
7
|
-
## 52. 双折线 / 面积图 `data-chart="dualline"` · `data-chart="area"`
|
|
8
|
-
|
|
9
|
-
```html
|
|
10
|
-
<!-- 双折线:两条线对比(不引入第二色相:accent 实线 + text-3 虚线) -->
|
|
11
|
-
<svg class="chart" data-chart="dualline" viewBox="0 0 560 200">
|
|
12
|
-
<line x1="40" y1="160" x2="540" y2="160" class="s-bds" stroke-width="1"/>
|
|
13
|
-
<path data-draw d="M60,130 L180,104 L300,78 L420,58 L520,44" class="f-none s-acc"
|
|
14
|
-
stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
15
|
-
<path data-draw d="M60,146 L180,132 L300,116 L420,98 L520,80" class="f-none s-txt3"
|
|
16
|
-
stroke-width="2" stroke-dasharray="5 5" stroke-linecap="round"/>
|
|
17
|
-
<text x="60" y="180" text-anchor="middle" class="f-txt3" font-size="11">2026Q3</text>
|
|
18
|
-
<text x="300" y="180" text-anchor="middle" class="f-txt3" font-size="11">2027Q1</text>
|
|
19
|
-
<text x="520" y="180" text-anchor="middle" class="f-txt3" font-size="11">2027Q3</text>
|
|
20
|
-
</svg>
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
```html
|
|
24
|
-
<!-- 面积图:强调累计量级(面积用 accent 低透明度,线用 accent) -->
|
|
25
|
-
<svg class="chart" data-chart="area" viewBox="0 0 560 200">
|
|
26
|
-
<line x1="40" y1="160" x2="540" y2="160" class="s-bds" stroke-width="1"/>
|
|
27
|
-
<path d="M60,132 L180,108 L300,80 L420,60 L520,46 L520,160 L60,160 Z"
|
|
28
|
-
class="f-acc" fill-opacity=".12"/>
|
|
29
|
-
<path data-draw d="M60,132 L180,108 L300,80 L420,60 L520,46" class="f-none s-acc"
|
|
30
|
-
stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
31
|
-
</svg>
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
**规则**:双系列时第二条走 `s-txt3` 虚线(或 spectrum 下 `s-c2`);数据点标在线上(`<circle>`),坐标轴只做尺度参考;PPTX 用 `chart.type:'dualline'/'area'`(原生 line/area 图表,`series` 传多系列)。
|
|
35
|
-
|
|
36
|
-
---
|
|
37
|
-
|
|
38
|
-
## 53. 气泡图(双维分布 + 第三维权重)`data-chart="bubble"`
|
|
39
|
-
|
|
40
|
-
```html
|
|
41
|
-
<svg class="chart" data-chart="bubble" viewBox="0 0 560 220">
|
|
42
|
-
<line x1="40" y1="180" x2="540" y2="180" class="s-bds" stroke-width="1"/>
|
|
43
|
-
<line x1="40" y1="180" x2="40" y2="20" class="s-bds" stroke-width="1"/>
|
|
44
|
-
<circle cx="140" cy="120" r="16" class="f-acc" fill-opacity=".75"/>
|
|
45
|
-
<circle cx="240" cy="86" r="26" class="f-acc" fill-opacity=".75"/>
|
|
46
|
-
<circle cx="360" cy="130" r="12" class="f-accs2"/>
|
|
47
|
-
<circle cx="460" cy="60" r="20" class="f-s2"/>
|
|
48
|
-
<text x="240" y="90" text-anchor="middle" class="t-on-inv" font-size="11">研发</text>
|
|
49
|
-
</svg>
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
**规则**:气泡半径 ∝ 第三维(面积按半径平方,勿直接线性映射半径);≤8 个气泡;轴标签写清量纲;关键气泡标名称。
|
|
53
|
-
|
|
54
|
-
---
|
|
55
|
-
|
|
56
|
-
## 54. 进度条组(多项目完成度)`data-chart="progress"`
|
|
57
|
-
|
|
58
|
-
```html
|
|
59
|
-
<svg class="chart" data-chart="progress" viewBox="0 0 560 150">
|
|
60
|
-
<text x="0" y="18" class="f-txt2" font-size="12">指标中心</text>
|
|
61
|
-
<rect x="96" y="8" width="400" height="12" rx="6" class="f-s2"/>
|
|
62
|
-
<rect x="96" y="8" width="332" height="12" rx="6" class="f-acc"/>
|
|
63
|
-
<text x="508" y="19" class="f-txt" font-size="12" font-weight="600">83%</text>
|
|
64
|
-
<text x="0" y="52" class="f-txt2" font-size="12">数据契约</text>
|
|
65
|
-
<rect x="96" y="42" width="400" height="12" rx="6" class="f-s2"/>
|
|
66
|
-
<rect x="96" y="42" width="216" height="12" rx="6" class="f-acc"/>
|
|
67
|
-
<text x="508" y="53" class="f-txt" font-size="12" font-weight="600">54%</text>
|
|
68
|
-
</svg>
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
**规则**:行高 28–34px;数值标条末右对齐;≤6 行;需要"目标线"时改用 bullet(`components.md` §49)。PPTX 映射为 `bullet` 页型。
|
|
72
|
-
|
|
73
|
-
---
|
|
74
|
-
|
|
75
|
-
## 55. 迷你趋势线(KPI 内嵌)`data-chart="sparkline"`
|
|
76
|
-
|
|
77
|
-
```html
|
|
78
|
-
<div class="metric">
|
|
79
|
-
<div class="metric__v t-metric">61<small>%</small></div>
|
|
80
|
-
<div class="metric__k">试点率</div>
|
|
81
|
-
<svg class="chart" data-chart="sparkline" viewBox="0 0 120 28" style="width:120px">
|
|
82
|
-
<path d="M2,22 L24,18 L46,20 L68,12 L90,9 L118,4" class="f-none s-acc"
|
|
83
|
-
stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
84
|
-
<circle cx="118" cy="4" r="2.6" class="f-acc"/>
|
|
85
|
-
</svg>
|
|
86
|
-
</div>
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
**规则**:只用于指标卡内(不与大图并存);无坐标轴、无网格;末点必须标圆点;高度 20–30。
|
|
90
|
-
|
|
91
|
-
---
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
## 57. 斜率图 `data-chart="slope"`
|
|
96
|
-
|
|
97
|
-
**用途**:两期排名/份额对比——**谁升谁降一目了然**(比双柱更直观)。**系列 ≤6 条**。
|
|
98
|
-
|
|
99
|
-
```html
|
|
100
|
-
<div class="fig">
|
|
101
|
-
<div class="fig__cap">各域试点率:一年之间谁升谁降</div>
|
|
102
|
-
<svg class="chart" data-chart="slope" viewBox="0 0 560 200">
|
|
103
|
-
<!-- 两期轴 -->
|
|
104
|
-
<line x1="90" y1="26" x2="90" y2="176" class="s-bds" stroke-width="1"/>
|
|
105
|
-
<line x1="470" y1="26" x2="470" y2="176" class="s-bds" stroke-width="1"/>
|
|
106
|
-
<text x="90" y="16" text-anchor="middle" class="f-txt3" font-size="11">2025</text>
|
|
107
|
-
<text x="470" y="16" text-anchor="middle" class="f-txt3" font-size="11">2026</text>
|
|
108
|
-
<!-- 4 条斜率线:强调最大涨幅(研发),其余中性 -->
|
|
109
|
-
<path d="M90,52 L470,75" class="f-none s-txt3" stroke-width="2"/>
|
|
110
|
-
<path d="M90,94 L470,83" class="f-none s-txt3" stroke-width="2"/>
|
|
111
|
-
<path d="M90,120 L470,100" class="f-none s-txt3" stroke-width="2"/>
|
|
112
|
-
<path d="M90,148 L470,92" class="f-none s-acc" stroke-width="2.5"/>
|
|
113
|
-
<circle cx="90" cy="52" r="4" class="f-txt3"/><circle cx="470" cy="75" r="4" class="f-txt3"/>
|
|
114
|
-
<circle cx="90" cy="94" r="4" class="f-txt3"/><circle cx="470" cy="83" r="4" class="f-txt3"/>
|
|
115
|
-
<circle cx="90" cy="120" r="4" class="f-txt3"/><circle cx="470" cy="100" r="4" class="f-txt3"/>
|
|
116
|
-
<circle cx="90" cy="148" r="5" class="f-acc"/><circle cx="470" cy="92" r="5" class="f-acc"/>
|
|
117
|
-
<!-- 端点数值(左:end 锚点 / 右:start 锚点) -->
|
|
118
|
-
<text x="78" y="56" text-anchor="end" class="f-txt3" font-size="11">客服 72%</text>
|
|
119
|
-
<text x="78" y="98" text-anchor="end" class="f-txt3" font-size="11">财务 57%</text>
|
|
120
|
-
<text x="78" y="124" text-anchor="end" class="f-txt3" font-size="11">营销 48%</text>
|
|
121
|
-
<text x="78" y="152" text-anchor="end" class="f-txt" font-size="11" font-weight="600">研发 38%</text>
|
|
122
|
-
<text x="482" y="79" class="f-txt3" font-size="11">64%</text>
|
|
123
|
-
<text x="482" y="87" class="f-txt3" font-size="11">61%</text>
|
|
124
|
-
<text x="482" y="104" class="f-txt3" font-size="11">55%</text>
|
|
125
|
-
<text x="482" y="96" class="f-acc" font-size="11" font-weight="600">58%</text>
|
|
126
|
-
</svg>
|
|
127
|
-
</div>
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
**规则**:**只两条轴**(两期),不画网格;强调色只给"最值得说的那 1–2 条";标签必须两端都标(读者要能读出升降幅度)。
|
|
131
|
-
|
|
132
|
-
---
|
|
133
|
-
|
|
134
|
-
---
|
|
135
|
-
|
|
136
|
-
## 58. 哑铃图 `data-chart="dumbbell"`
|
|
137
|
-
|
|
138
|
-
**用途**:同一指标的前后/两地对比(每行两点一线)。**行数 ≤6**。
|
|
139
|
-
|
|
140
|
-
```html
|
|
141
|
-
<div class="fig">
|
|
142
|
-
<div class="fig__cap">试点率 vs 规模化率:缺口即空间</div>
|
|
143
|
-
<svg class="chart" data-chart="dumbbell" viewBox="0 0 560 180">
|
|
144
|
-
<!-- 行:标签 + 底槽 + 连线 + 双点 + 数值 -->
|
|
145
|
-
<text x="0" y="34" class="f-txt2" font-size="12">客服</text>
|
|
146
|
-
<line x1="323" y1="30" x2="405" y2="30" class="s-txt3" stroke-width="2"/>
|
|
147
|
-
<circle cx="323" cy="30" r="6" class="f-s3"/>
|
|
148
|
-
<circle cx="405" cy="30" r="6" class="f-acc"/>
|
|
149
|
-
<text x="538" y="34" text-anchor="end" class="f-txt" font-size="11" font-weight="600">52 → 72%</text>
|
|
150
|
-
|
|
151
|
-
<text x="0" y="72" class="f-txt2" font-size="12">财务</text>
|
|
152
|
-
<line x1="299" y1="68" x2="344" y2="68" class="s-txt3" stroke-width="2"/>
|
|
153
|
-
<circle cx="299" cy="68" r="6" class="f-s3"/>
|
|
154
|
-
<circle cx="344" cy="68" r="6" class="f-acc"/>
|
|
155
|
-
<text x="538" y="72" text-anchor="end" class="f-txt" font-size="11" font-weight="600">46 → 57%</text>
|
|
156
|
-
|
|
157
|
-
<text x="0" y="110" class="f-txt2" font-size="12">营销</text>
|
|
158
|
-
<line x1="278" y1="106" x2="307" y2="106" class="s-txt3" stroke-width="2"/>
|
|
159
|
-
<circle cx="278" cy="106" r="6" class="f-s3"/>
|
|
160
|
-
<circle cx="307" cy="106" r="6" class="f-acc"/>
|
|
161
|
-
<text x="538" y="110" text-anchor="end" class="f-txt" font-size="11" font-weight="600">41 → 48%</text>
|
|
162
|
-
|
|
163
|
-
<text x="0" y="148" class="f-txt2" font-size="12">研发</text>
|
|
164
|
-
<line x1="266" y1="144" x2="348" y2="144" class="s-acc" stroke-width="2.5"/>
|
|
165
|
-
<circle cx="266" cy="144" r="6" class="f-s3"/>
|
|
166
|
-
<circle cx="348" cy="144" r="6" class="f-acc"/>
|
|
167
|
-
<text x="538" y="148" text-anchor="end" class="f-acc" font-size="11" font-weight="600">38 → 58%</text>
|
|
168
|
-
</svg>
|
|
169
|
-
</div>
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
**规则**:起止点同一量纲(左右可标差值);**差距最大的一行用强调色连线**,其余中性;行高 34–38px。
|
|
173
|
-
|
|
174
|
-
---
|
|
175
|
-
|
|
176
|
-
---
|
|
177
|
-
|
|
178
|
-
## 59. 棒棒糖图 `data-chart="lollipop"`
|
|
179
|
-
|
|
180
|
-
**用途**:排名 + 量值,比横向条形更轻(适合 5–8 项)。**行数 ≤8**。
|
|
181
|
-
|
|
182
|
-
```html
|
|
183
|
-
<div class="fig">
|
|
184
|
-
<div class="fig__cap">各域数据消费占比</div>
|
|
185
|
-
<svg class="chart" data-chart="lollipop" viewBox="0 0 560 160">
|
|
186
|
-
<line x1="100" y1="10" x2="100" y2="150" class="s-bds" stroke-width="1"/>
|
|
187
|
-
<text x="0" y="26" class="f-txt2" font-size="12">供应链</text>
|
|
188
|
-
<line x1="100" y1="22" x2="404" y2="22" class="s-acc" stroke-width="2"/>
|
|
189
|
-
<circle cx="404" cy="22" r="5" class="f-acc"/>
|
|
190
|
-
<text x="416" y="26" class="f-txt" font-size="11" font-weight="600">76%</text>
|
|
191
|
-
<text x="0" y="54" class="f-txt2" font-size="12">客服</text>
|
|
192
|
-
<line x1="100" y1="50" x2="388" y2="50" class="s-acc" stroke-width="2"/>
|
|
193
|
-
<circle cx="388" cy="50" r="5" class="f-acc"/>
|
|
194
|
-
<text x="400" y="54" class="f-txt" font-size="11" font-weight="600">72%</text>
|
|
195
|
-
<text x="0" y="82" class="f-txt2" font-size="12">财务</text>
|
|
196
|
-
<line x1="100" y1="78" x2="328" y2="78" class="s-txt3" stroke-width="2"/>
|
|
197
|
-
<circle cx="328" cy="78" r="5" class="f-s3"/>
|
|
198
|
-
<text x="340" y="82" class="f-txt2" font-size="11">57%</text>
|
|
199
|
-
<text x="0" y="110" class="f-txt2" font-size="12">营销</text>
|
|
200
|
-
<line x1="100" y1="106" x2="292" y2="106" class="s-txt3" stroke-width="2"/>
|
|
201
|
-
<circle cx="292" cy="106" r="5" class="f-s3"/>
|
|
202
|
-
<text x="304" y="110" class="f-txt2" font-size="11">48%</text>
|
|
203
|
-
<text x="0" y="138" class="f-txt2" font-size="12">研发</text>
|
|
204
|
-
<line x1="100" y1="134" x2="252" y2="134" class="s-txt3" stroke-width="2"/>
|
|
205
|
-
<circle cx="252" cy="134" r="5" class="f-s3"/>
|
|
206
|
-
<text x="264" y="138" class="f-txt2" font-size="11">38%</text>
|
|
207
|
-
</svg>
|
|
208
|
-
</div>
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
**规则**:按值降序排列;**强调色只给 Top 1–2 项**;行高 28–32px;数值标在点右侧。
|
|
212
|
-
|
|
213
|
-
---
|
|
214
|
-
|
|
215
|
-
---
|
|
216
|
-
|
|
217
|
-
## 61. 玫瑰图 `data-chart="rose"`
|
|
218
|
-
|
|
219
|
-
**用途**:周期性 / 多维强度(极坐标雷达的"面积版",比雷达更强调单维突出)。**维度 ≤6**。
|
|
220
|
-
|
|
221
|
-
```html
|
|
222
|
-
<div class="fig" style="text-align:center">
|
|
223
|
-
<div class="fig__cap">六维就绪度(半径 ∝ 得分)</div>
|
|
224
|
-
<svg class="chart" data-chart="rose" viewBox="0 0 200 200" style="width:200px;margin-inline:auto">
|
|
225
|
-
<!-- 中心 100,100;6 个 60° 扇区,半径 88/66/78/52/70/44 -->
|
|
226
|
-
<path d="M100,100 L100,12 A88,88 0 0 1 176.2,56 Z" class="f-acc"/>
|
|
227
|
-
<path d="M100,100 L157.2,67 A66,66 0 0 1 157.2,133 Z" class="f-acc" fill-opacity=".75"/>
|
|
228
|
-
<path d="M100,100 L167.5,139 A78,78 0 0 1 100,178 Z" class="f-acc" fill-opacity=".55"/>
|
|
229
|
-
<path d="M100,100 L100,152 A52,52 0 0 1 55,126 Z" class="f-s3"/>
|
|
230
|
-
<path d="M100,100 L39.4,135 A70,70 0 0 1 39.4,65 Z" class="f-s3"/>
|
|
231
|
-
<path d="M100,100 L61.9,78 A44,44 0 0 1 100,56 Z" class="f-s2"/>
|
|
232
|
-
<circle cx="100" cy="100" r="2.5" class="f-txt3"/>
|
|
233
|
-
<text x="100" y="8" text-anchor="middle" class="f-txt2" font-size="10">语义</text>
|
|
234
|
-
<text x="186" y="54" text-anchor="middle" class="f-txt2" font-size="10">服务</text>
|
|
235
|
-
<text x="178" y="150" text-anchor="middle" class="f-txt2" font-size="10">消费</text>
|
|
236
|
-
<text x="100" y="196" text-anchor="middle" class="f-txt2" font-size="10">底座</text>
|
|
237
|
-
<text x="14" y="150" text-anchor="middle" class="f-txt2" font-size="10">安全</text>
|
|
238
|
-
<text x="22" y="54" text-anchor="middle" class="f-txt2" font-size="10">契约</text>
|
|
239
|
-
</svg>
|
|
240
|
-
</div>
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
**规则**:扇区角度均分、半径按值映射(**面积 ∝ 值的平方,勿线性映射半径**);显示直径 ≥180px;中心留白放维度总数;扇区色走 accent 明度阶梯。
|
|
244
|
-
|
|
245
|
-
---
|
|
246
|
-
|
|
247
|
-
---
|
|
248
|
-
|
|
249
|
-
## 62. 点图 `data-chart="dotplot"`
|
|
250
|
-
|
|
251
|
-
**用途**:分布 / 离散程度(每个对象多个观测点,看分散与聚集)。**行 ≤6、每行点 ≤5**。
|
|
252
|
-
|
|
253
|
-
```html
|
|
254
|
-
<div class="fig">
|
|
255
|
-
<div class="fig__cap">各域试点率分布(三年观测)</div>
|
|
256
|
-
<svg class="chart" data-chart="dotplot" viewBox="0 0 560 150">
|
|
257
|
-
<!-- 轴:0 / 50 / 100 -->
|
|
258
|
-
<line x1="100" y1="16" x2="100" y2="134" class="s-bds" stroke-width="1"/>
|
|
259
|
-
<line x1="310" y1="16" x2="310" y2="134" class="s-bds" stroke-width="1" stroke-dasharray="3 4"/>
|
|
260
|
-
<line x1="520" y1="16" x2="520" y2="134" class="s-bds" stroke-width="1"/>
|
|
261
|
-
<text x="100" y="146" text-anchor="middle" class="f-txt3" font-size="10">0</text>
|
|
262
|
-
<text x="310" y="146" text-anchor="middle" class="f-txt3" font-size="10">50</text>
|
|
263
|
-
<text x="520" y="146" text-anchor="middle" class="f-txt3" font-size="10">100%</text>
|
|
264
|
-
<!-- 行:标签 + 观测点 -->
|
|
265
|
-
<text x="0" y="34" class="f-txt2" font-size="12">客服</text>
|
|
266
|
-
<circle cx="184" cy="30" r="5" class="f-s3"/><circle cx="247" cy="30" r="5" class="f-s3"/>
|
|
267
|
-
<circle cx="302" cy="30" r="5" class="f-acc"/>
|
|
268
|
-
<text x="0" y="62" class="f-txt2" font-size="12">财务</text>
|
|
269
|
-
<circle cx="289" cy="58" r="5" class="f-s3"/><circle cx="344" cy="58" r="5" class="f-s3"/>
|
|
270
|
-
<circle cx="377" cy="58" r="5" class="f-acc"/>
|
|
271
|
-
<text x="0" y="90" class="f-txt2" font-size="12">营销</text>
|
|
272
|
-
<circle cx="360" cy="86" r="5" class="f-s3"/><circle cx="398" cy="86" r="5" class="f-s3"/>
|
|
273
|
-
<circle cx="428" cy="86" r="5" class="f-acc"/>
|
|
274
|
-
<text x="0" y="118" class="f-txt2" font-size="12">研发</text>
|
|
275
|
-
<circle cx="226" cy="114" r="5" class="f-s3"/><circle cx="285" cy="114" r="5" class="f-s3"/>
|
|
276
|
-
<circle cx="318" cy="114" r="5" class="f-acc"/>
|
|
277
|
-
</svg>
|
|
278
|
-
</div>
|
|
279
|
-
```
|
|
280
|
-
|
|
281
|
-
**规则**:**点重叠时轻微错位**(jitter ≤3px)或用空心圈表示重复;最新一期用强调色点,历史期用中性;行高 28px。
|
|
282
|
-
|
|
283
|
-
---
|
|
284
|
-
|
|
285
|
-
---
|
|
286
|
-
|
|
287
|
-
## 63. 子弹图 `data-chart="bulletchart"`
|
|
288
|
-
|
|
289
|
-
**用途**:目标 vs 实际 + **定性区间背景**(差/中/优三档),比 bullet 页型多一层"区间参照"。**行数 ≤6**。
|
|
290
|
-
|
|
291
|
-
```html
|
|
292
|
-
<div class="fig">
|
|
293
|
-
<div class="fig__cap">四项能力:实际条 vs 目标刻度(背景为三档区间)</div>
|
|
294
|
-
<svg class="chart" data-chart="bulletchart" viewBox="0 0 560 160">
|
|
295
|
-
<!-- 行 1:背景三档(0-60 / 60-85 / 85-100)+ 实际条 + 目标线 -->
|
|
296
|
-
<text x="0" y="34" class="f-txt2" font-size="12">场景覆盖</text>
|
|
297
|
-
<rect x="100" y="23" width="252" height="14" class="f-s1"/>
|
|
298
|
-
<rect x="352" y="23" width="105" height="14" class="f-s2"/>
|
|
299
|
-
<rect x="457" y="23" width="63" height="14" class="f-s3"/>
|
|
300
|
-
<rect x="100" y="23" width="256" height="14" class="f-acc"/>
|
|
301
|
-
<line x1="436" y1="18" x2="436" y2="42" class="s-txt3" stroke-width="2.5"/>
|
|
302
|
-
<text x="538" y="34" text-anchor="end" class="f-txt" font-size="11" font-weight="600">61 / 80%</text>
|
|
303
|
-
|
|
304
|
-
<text x="0" y="68" class="f-txt2" font-size="12">治理就绪</text>
|
|
305
|
-
<rect x="100" y="57" width="252" height="14" class="f-s1"/>
|
|
306
|
-
<rect x="352" y="57" width="105" height="14" class="f-s2"/>
|
|
307
|
-
<rect x="457" y="57" width="63" height="14" class="f-s3"/>
|
|
308
|
-
<rect x="100" y="57" width="143" height="14" class="f-acc" fill-opacity=".75"/>
|
|
309
|
-
<line x1="415" y1="52" x2="415" y2="76" class="s-txt3" stroke-width="2.5"/>
|
|
310
|
-
<text x="538" y="68" text-anchor="end" class="f-txt" font-size="11" font-weight="600">34 / 75%</text>
|
|
311
|
-
|
|
312
|
-
<text x="0" y="102" class="f-txt2" font-size="12">工具集成</text>
|
|
313
|
-
<rect x="100" y="91" width="252" height="14" class="f-s1"/>
|
|
314
|
-
<rect x="352" y="91" width="105" height="14" class="f-s2"/>
|
|
315
|
-
<rect x="457" y="91" width="63" height="14" class="f-s3"/>
|
|
316
|
-
<rect x="100" y="91" width="176" height="14" class="f-acc" fill-opacity=".75"/>
|
|
317
|
-
<line x1="394" y1="86" x2="394" y2="110" class="s-txt3" stroke-width="2.5"/>
|
|
318
|
-
<text x="538" y="102" text-anchor="end" class="f-txt" font-size="11" font-weight="600">42 / 70%</text>
|
|
319
|
-
|
|
320
|
-
<text x="0" y="136" class="f-txt2" font-size="12">规模化运行</text>
|
|
321
|
-
<rect x="100" y="125" width="252" height="14" class="f-s1"/>
|
|
322
|
-
<rect x="352" y="125" width="105" height="14" class="f-s2"/>
|
|
323
|
-
<rect x="457" y="125" width="63" height="14" class="f-s3"/>
|
|
324
|
-
<rect x="100" y="125" width="76" height="14" class="f-s3"/>
|
|
325
|
-
<line x1="352" y1="120" x2="352" y2="144" class="s-txt3" stroke-width="2.5"/>
|
|
326
|
-
<text x="538" y="136" text-anchor="end" class="f-txt3" font-size="11" font-weight="600">18 / 60%</text>
|
|
327
|
-
</svg>
|
|
328
|
-
</div>
|
|
329
|
-
```
|
|
330
|
-
|
|
331
|
-
**规则**:三档区间用 `f-s1/f-s2/f-s3`(中性明度差,**不引入红绿**);实际条压区间之上;目标线为竖线;未达标行实际条转中性色(`f-s3`);数值统一"实际 / 目标"。
|
|
332
|
-
|
|
333
|
-
---
|
|
334
|
-
|
|
335
|
-
---
|
|
336
|
-
|
|
337
|
-
## 65. 华夫图(构成占比 · 每格 1%)`data-chart="waffle"`
|
|
338
|
-
|
|
339
|
-
**用途**:把百分比画成 10×10 点阵——**每格 = 1%**,比饼图更易比较"差几格"。适合"覆盖率 / 达成率 / 构成占比"这类单一比例叙事。**类别 ≤3 组**(多组改用 marimekko / treemap)。
|
|
340
|
-
|
|
341
|
-
```html
|
|
342
|
-
<div class="fig">
|
|
343
|
-
<div class="fig__cap">可信数据覆盖率 46%(每格 = 1%)</div>
|
|
344
|
-
<svg class="chart" data-chart="waffle" viewBox="0 0 560 190">
|
|
345
|
-
<g transform="translate(16,16)">
|
|
346
|
-
<path class="f-s1" d="M144 108h15v15h-15z M162 108h15v15h-15z M0 126h15v15h-15z M18 126h15v15h-15z M36 126h15v15h-15z M54 126h15v15h-15z M72 126h15v15h-15z M90 126h15v15h-15z M108 126h15v15h-15z M126 126h15v15h-15z M144 126h15v15h-15z M162 126h15v15h-15z M0 144h15v15h-15z M18 144h15v15h-15z M36 144h15v15h-15z M54 144h15v15h-15z M72 144h15v15h-15z M90 144h15v15h-15z M108 144h15v15h-15z M126 144h15v15h-15z M144 144h15v15h-15z M162 144h15v15h-15z M0 162h15v15h-15z M18 162h15v15h-15z M36 162h15v15h-15z M54 162h15v15h-15z M72 162h15v15h-15z M90 162h15v15h-15z M108 162h15v15h-15z M126 162h15v15h-15z M144 162h15v15h-15z M162 162h15v15h-15z"/>
|
|
347
|
-
<path class="f-accs" d="M108 72h15v15h-15z M126 72h15v15h-15z M144 72h15v15h-15z M162 72h15v15h-15z M0 90h15v15h-15z M18 90h15v15h-15z M36 90h15v15h-15z M54 90h15v15h-15z M72 90h15v15h-15z M90 90h15v15h-15z M108 90h15v15h-15z M126 90h15v15h-15z M144 90h15v15h-15z M162 90h15v15h-15z M0 108h15v15h-15z M18 108h15v15h-15z M36 108h15v15h-15z M54 108h15v15h-15z M72 108h15v15h-15z M90 108h15v15h-15z M108 108h15v15h-15z M126 108h15v15h-15z"/>
|
|
348
|
-
<path class="f-acc" d="M0 0h15v15h-15z M18 0h15v15h-15z M36 0h15v15h-15z M54 0h15v15h-15z M72 0h15v15h-15z M90 0h15v15h-15z M108 0h15v15h-15z M126 0h15v15h-15z M144 0h15v15h-15z M162 0h15v15h-15z M0 18h15v15h-15z M18 18h15v15h-15z M36 18h15v15h-15z M54 18h15v15h-15z M72 18h15v15h-15z M90 18h15v15h-15z M108 18h15v15h-15z M126 18h15v15h-15z M144 18h15v15h-15z M162 18h15v15h-15z M0 36h15v15h-15z M18 36h15v15h-15z M36 36h15v15h-15z M54 36h15v15h-15z M72 36h15v15h-15z M90 36h15v15h-15z M108 36h15v15h-15z M126 36h15v15h-15z M144 36h15v15h-15z M162 36h15v15h-15z M0 54h15v15h-15z M18 54h15v15h-15z M36 54h15v15h-15z M54 54h15v15h-15z M72 54h15v15h-15z M90 54h15v15h-15z M108 54h15v15h-15z M126 54h15v15h-15z M144 54h15v15h-15z M162 54h15v15h-15z M0 72h15v15h-15z M18 72h15v15h-15z M36 72h15v15h-15z M54 72h15v15h-15z M72 72h15v15h-15z M90 72h15v15h-15z"/>
|
|
349
|
-
</g>
|
|
350
|
-
<g transform="translate(230,40)" font-size="13">
|
|
351
|
-
<rect x="0" y="0" width="13" height="13" class="f-acc"/>
|
|
352
|
-
<text x="22" y="12" class="f-txt" font-weight="600">46% 已覆盖</text>
|
|
353
|
-
<rect x="0" y="30" width="13" height="13" class="f-accs"/>
|
|
354
|
-
<text x="22" y="42" class="f-txt2">22% 建设中</text>
|
|
355
|
-
<rect x="0" y="60" width="13" height="13" class="f-s1"/>
|
|
356
|
-
<text x="22" y="72" class="f-txt2">32% 待启动</text>
|
|
357
|
-
<text x="0" y="108" class="f-txt3" font-size="11">口径:纳入可信清单的数据集 / 全量数据集</text>
|
|
358
|
-
</g>
|
|
359
|
-
</svg>
|
|
360
|
-
</div>
|
|
361
|
-
```
|
|
362
|
-
|
|
363
|
-
**规则**:三组以内用 `f-acc / f-accs / f-s1`(同色相明度阶梯);**格数必须严格等于百分比**(46% = 46 格);点阵按行优先填色;不写死色值。
|
|
364
|
-
|
|
365
|
-
---
|
|
366
|
-
|
|
367
|
-
---
|
|
368
|
-
|
|
369
|
-
## 67. 帕累托图(主因排序 · 二八分析)`data-chart="pareto"`
|
|
370
|
-
|
|
371
|
-
**用途**:降序柱 + 累计占比折线 + **80% 参考线**——一眼看出"哪几项贡献了大部分"。**类别 ≤7**。
|
|
372
|
-
|
|
373
|
-
```html
|
|
374
|
-
<div class="fig">
|
|
375
|
-
<div class="fig__cap">六类缺陷:前 3 类贡献 77% 的问题量</div>
|
|
376
|
-
<svg class="chart" data-chart="pareto" viewBox="0 0 560 200">
|
|
377
|
-
<line x1="72" y1="160" x2="500" y2="160" class="s-bd"/>
|
|
378
|
-
<!-- 80% 参考线 -->
|
|
379
|
-
<line x1="72" y1="56" x2="500" y2="56" class="s-txt3" stroke-width="1" stroke-dasharray="4 4"/>
|
|
380
|
-
<text x="504" y="60" class="f-txt3" font-size="10">80%</text>
|
|
381
|
-
<!-- 柱(降序) -->
|
|
382
|
-
<rect x="72" y="30" width="56" height="130" class="f-acc"/>
|
|
383
|
-
<rect x="138" y="78" width="56" height="82" class="f-acc" fill-opacity=".82"/>
|
|
384
|
-
<rect x="204" y="109" width="56" height="51" class="f-acc" fill-opacity=".68"/>
|
|
385
|
-
<rect x="270" y="122" width="56" height="38" class="f-s2"/>
|
|
386
|
-
<rect x="336" y="136" width="56" height="24" class="f-s2"/>
|
|
387
|
-
<rect x="402" y="143" width="56" height="17" class="f-s2"/>
|
|
388
|
-
<!-- 累计占比折线 -->
|
|
389
|
-
<polyline points="100,111 166,79 232,60 298,46 364,37 430,30" fill="none"
|
|
390
|
-
class="s-acc" stroke-width="2.5"/>
|
|
391
|
-
<g class="f-acc">
|
|
392
|
-
<circle cx="100" cy="111" r="3.5"/><circle cx="166" cy="79" r="3.5"/>
|
|
393
|
-
<circle cx="232" cy="60" r="3.5"/><circle cx="298" cy="46" r="3.5"/>
|
|
394
|
-
<circle cx="364" cy="37" r="3.5"/><circle cx="430" cy="30" r="3.5"/>
|
|
395
|
-
</g>
|
|
396
|
-
<!-- 类别标签 -->
|
|
397
|
-
<g class="f-txt2" font-size="10" text-anchor="middle">
|
|
398
|
-
<text x="100" y="176">口径缺失</text><text x="166" y="176">字段空值</text>
|
|
399
|
-
<text x="232" y="176">更新延迟</text><text x="298" y="176">重复入库</text>
|
|
400
|
-
<text x="364" y="176">权限错配</text><text x="430" y="176">其他</text>
|
|
401
|
-
</g>
|
|
402
|
-
</svg>
|
|
403
|
-
</div>
|
|
404
|
-
```
|
|
405
|
-
|
|
406
|
-
**规则**:柱**必须降序**;累计线走 `s-acc` + `f-acc` 点;80% 线用虚线(`s-txt3`);前 N 项(累计 ≤80%)用 accent,其余转 `f-s2`;数值标柱顶,不重复标左右轴。
|
|
407
|
-
|
|
408
|
-
---
|
|
409
|
-
|
|
410
|
-
---
|
|
411
|
-
|
|
412
|
-
## 68. 径向条形图(多指标达成率)`data-chart="radialbar"`
|
|
413
|
-
|
|
414
|
-
**用途**:多指标达成率画成**同心环**——比并排进度条更紧凑,适合"一屏四指标"。**环数 ≤5**。注意:需内联 `style="width:200px"` 以上(校验器按 `pxWidthMin` 核)。
|
|
415
|
-
|
|
416
|
-
```html
|
|
417
|
-
<div class="fig">
|
|
418
|
-
<div class="fig__cap">四项能力成熟度(同心环,自外向内)</div>
|
|
419
|
-
<svg class="chart" data-chart="radialbar" viewBox="0 0 240 240" style="width:240px">
|
|
420
|
-
<g transform="rotate(-90 120 120)" fill="none" stroke-width="15">
|
|
421
|
-
<circle cx="120" cy="120" r="100" class="s-bd" stroke-opacity=".45"/>
|
|
422
|
-
<circle cx="120" cy="120" r="100" class="s-acc" stroke-linecap="round" stroke-dasharray="471 157"/>
|
|
423
|
-
<circle cx="120" cy="120" r="80" class="s-bd" stroke-opacity=".45"/>
|
|
424
|
-
<circle cx="120" cy="120" r="80" class="s-acc" stroke-linecap="round" stroke-opacity=".85" stroke-dasharray="302 201"/>
|
|
425
|
-
<circle cx="120" cy="120" r="60" class="s-bd" stroke-opacity=".45"/>
|
|
426
|
-
<circle cx="120" cy="120" r="60" class="s-acc" stroke-linecap="round" stroke-opacity=".7" stroke-dasharray="170 207"/>
|
|
427
|
-
<circle cx="120" cy="120" r="40" class="s-bd" stroke-opacity=".45"/>
|
|
428
|
-
<circle cx="120" cy="120" r="40" class="s-acc" stroke-linecap="round" stroke-opacity=".55" stroke-dasharray="75 176"/>
|
|
429
|
-
</g>
|
|
430
|
-
<text x="120" y="114" text-anchor="middle" class="f-txt" font-size="26" font-weight="700">75%</text>
|
|
431
|
-
<text x="120" y="134" text-anchor="middle" class="f-txt3" font-size="11">平台成熟度</text>
|
|
432
|
-
</svg>
|
|
433
|
-
</div>
|
|
434
|
-
```
|
|
435
|
-
|
|
436
|
-
**规则**:底环 `s-bd`(低透明)+ 进度环 `s-acc`(**明度阶梯区分,不引入多色相**);`stroke-dasharray` = `周长×达成率` + 剩余(周长 = 2πr);统一 `rotate(-90 圆心)` 从 12 点起画;中心放总量或首要指标。
|
|
437
|
-
|
|
438
|
-
---
|
|
439
|
-
|
|
440
|
-
---
|
|
441
|
-
|
|
442
|
-
## 70. K 线图(区间波动 · 开高低收)`data-chart="candlestick"`
|
|
443
|
-
|
|
444
|
-
**用途**:每个时间点的**开 / 高 / 低 / 收**——波动幅度与方向。适合"价格 / 评分 / 指标的区间波动"。**蜡烛 ≤12 根**。
|
|
445
|
-
|
|
446
|
-
```html
|
|
447
|
-
<div class="fig">
|
|
448
|
-
<div class="fig__cap">八期评分波动(实体 = 开收,须 = 高低)</div>
|
|
449
|
-
<svg class="chart" data-chart="candlestick" viewBox="0 0 560 200">
|
|
450
|
-
<line x1="60" y1="180" x2="540" y2="180" class="s-bd"/>
|
|
451
|
-
<!-- 上涨(收 > 开)= accent;下跌 = 中性 f-s3(不引入红绿) -->
|
|
452
|
-
<g class="s-acc" stroke-width="1.5">
|
|
453
|
-
<line x1="80" y1="103" x2="80" y2="161"/><line x1="200" y1="98" x2="200" y2="137"/>
|
|
454
|
-
<line x1="260" y1="55" x2="260" y2="108"/><line x1="440" y1="70" x2="440" y2="103"/>
|
|
455
|
-
<line x1="500" y1="41" x2="500" y2="79"/>
|
|
456
|
-
</g>
|
|
457
|
-
<g class="f-acc">
|
|
458
|
-
<rect x="67" y="113" width="26" height="31"/><rect x="187" y="103" width="26" height="19"/>
|
|
459
|
-
<rect x="247" y="65" width="26" height="38"/><rect x="427" y="74" width="26" height="14"/>
|
|
460
|
-
<rect x="487" y="48" width="26" height="26"/>
|
|
461
|
-
</g>
|
|
462
|
-
<g class="s-txt3" stroke-width="1.5">
|
|
463
|
-
<line x1="140" y1="84" x2="140" y2="127"/><line x1="320" y1="48" x2="320" y2="84"/>
|
|
464
|
-
<line x1="380" y1="65" x2="380" y2="98"/>
|
|
465
|
-
</g>
|
|
466
|
-
<g class="f-s3">
|
|
467
|
-
<rect x="127" y="113" width="26" height="10"/><rect x="307" y="65" width="26" height="12"/>
|
|
468
|
-
<rect x="367" y="77" width="26" height="12"/>
|
|
469
|
-
</g>
|
|
470
|
-
<g class="f-txt3" font-size="10" text-anchor="middle">
|
|
471
|
-
<text x="80" y="194">1</text><text x="140" y="194">2</text><text x="200" y="194">3</text>
|
|
472
|
-
<text x="260" y="194">4</text><text x="320" y="194">5</text><text x="380" y="194">6</text>
|
|
473
|
-
<text x="440" y="194">7</text><text x="500" y="194">8</text>
|
|
474
|
-
</g>
|
|
475
|
-
</svg>
|
|
476
|
-
</div>
|
|
477
|
-
```
|
|
478
|
-
|
|
479
|
-
**规则**:**不引入红绿**——上涨用 `f-acc` 实体 + `s-acc` 须,下跌用 `f-s3` 实体 + `s-txt3` 须;实体宽度一致、须为 1.5px 竖线;坐标轴只标时间序号,数值靠图注给区间。
|
|
480
|
-
|
|
481
|
-
---
|
|
482
|
-
|
|
1
|
+
# 图表全库 · charts-extended.md
|
|
2
|
+
|
|
3
|
+
> 由 `charts.md` 拆出(§编号保持不变,跨文件稳定引用)。
|
|
4
|
+
> 取码:`python scripts/extract_snippet.py --file charts.md --section <编号>`
|
|
5
|
+
> 或直接 `--file charts-extended.md --section <编号>`。整读大文件视为违规。
|
|
6
|
+
|
|
7
|
+
## 52. 双折线 / 面积图 `data-chart="dualline"` · `data-chart="area"`
|
|
8
|
+
|
|
9
|
+
```html
|
|
10
|
+
<!-- 双折线:两条线对比(不引入第二色相:accent 实线 + text-3 虚线) -->
|
|
11
|
+
<svg class="chart" data-chart="dualline" viewBox="0 0 560 200">
|
|
12
|
+
<line x1="40" y1="160" x2="540" y2="160" class="s-bds" stroke-width="1"/>
|
|
13
|
+
<path data-draw d="M60,130 L180,104 L300,78 L420,58 L520,44" class="f-none s-acc"
|
|
14
|
+
stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
15
|
+
<path data-draw d="M60,146 L180,132 L300,116 L420,98 L520,80" class="f-none s-txt3"
|
|
16
|
+
stroke-width="2" stroke-dasharray="5 5" stroke-linecap="round"/>
|
|
17
|
+
<text x="60" y="180" text-anchor="middle" class="f-txt3" font-size="11">2026Q3</text>
|
|
18
|
+
<text x="300" y="180" text-anchor="middle" class="f-txt3" font-size="11">2027Q1</text>
|
|
19
|
+
<text x="520" y="180" text-anchor="middle" class="f-txt3" font-size="11">2027Q3</text>
|
|
20
|
+
</svg>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
```html
|
|
24
|
+
<!-- 面积图:强调累计量级(面积用 accent 低透明度,线用 accent) -->
|
|
25
|
+
<svg class="chart" data-chart="area" viewBox="0 0 560 200">
|
|
26
|
+
<line x1="40" y1="160" x2="540" y2="160" class="s-bds" stroke-width="1"/>
|
|
27
|
+
<path d="M60,132 L180,108 L300,80 L420,60 L520,46 L520,160 L60,160 Z"
|
|
28
|
+
class="f-acc" fill-opacity=".12"/>
|
|
29
|
+
<path data-draw d="M60,132 L180,108 L300,80 L420,60 L520,46" class="f-none s-acc"
|
|
30
|
+
stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
31
|
+
</svg>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**规则**:双系列时第二条走 `s-txt3` 虚线(或 spectrum 下 `s-c2`);数据点标在线上(`<circle>`),坐标轴只做尺度参考;PPTX 用 `chart.type:'dualline'/'area'`(原生 line/area 图表,`series` 传多系列)。
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 53. 气泡图(双维分布 + 第三维权重)`data-chart="bubble"`
|
|
39
|
+
|
|
40
|
+
```html
|
|
41
|
+
<svg class="chart" data-chart="bubble" viewBox="0 0 560 220">
|
|
42
|
+
<line x1="40" y1="180" x2="540" y2="180" class="s-bds" stroke-width="1"/>
|
|
43
|
+
<line x1="40" y1="180" x2="40" y2="20" class="s-bds" stroke-width="1"/>
|
|
44
|
+
<circle cx="140" cy="120" r="16" class="f-acc" fill-opacity=".75"/>
|
|
45
|
+
<circle cx="240" cy="86" r="26" class="f-acc" fill-opacity=".75"/>
|
|
46
|
+
<circle cx="360" cy="130" r="12" class="f-accs2"/>
|
|
47
|
+
<circle cx="460" cy="60" r="20" class="f-s2"/>
|
|
48
|
+
<text x="240" y="90" text-anchor="middle" class="t-on-inv" font-size="11">研发</text>
|
|
49
|
+
</svg>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**规则**:气泡半径 ∝ 第三维(面积按半径平方,勿直接线性映射半径);≤8 个气泡;轴标签写清量纲;关键气泡标名称。
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 54. 进度条组(多项目完成度)`data-chart="progress"`
|
|
57
|
+
|
|
58
|
+
```html
|
|
59
|
+
<svg class="chart" data-chart="progress" viewBox="0 0 560 150">
|
|
60
|
+
<text x="0" y="18" class="f-txt2" font-size="12">指标中心</text>
|
|
61
|
+
<rect x="96" y="8" width="400" height="12" rx="6" class="f-s2"/>
|
|
62
|
+
<rect x="96" y="8" width="332" height="12" rx="6" class="f-acc"/>
|
|
63
|
+
<text x="508" y="19" class="f-txt" font-size="12" font-weight="600">83%</text>
|
|
64
|
+
<text x="0" y="52" class="f-txt2" font-size="12">数据契约</text>
|
|
65
|
+
<rect x="96" y="42" width="400" height="12" rx="6" class="f-s2"/>
|
|
66
|
+
<rect x="96" y="42" width="216" height="12" rx="6" class="f-acc"/>
|
|
67
|
+
<text x="508" y="53" class="f-txt" font-size="12" font-weight="600">54%</text>
|
|
68
|
+
</svg>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**规则**:行高 28–34px;数值标条末右对齐;≤6 行;需要"目标线"时改用 bullet(`components.md` §49)。PPTX 映射为 `bullet` 页型。
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## 55. 迷你趋势线(KPI 内嵌)`data-chart="sparkline"`
|
|
76
|
+
|
|
77
|
+
```html
|
|
78
|
+
<div class="metric">
|
|
79
|
+
<div class="metric__v t-metric">61<small>%</small></div>
|
|
80
|
+
<div class="metric__k">试点率</div>
|
|
81
|
+
<svg class="chart" data-chart="sparkline" viewBox="0 0 120 28" style="width:120px">
|
|
82
|
+
<path d="M2,22 L24,18 L46,20 L68,12 L90,9 L118,4" class="f-none s-acc"
|
|
83
|
+
stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
|
84
|
+
<circle cx="118" cy="4" r="2.6" class="f-acc"/>
|
|
85
|
+
</svg>
|
|
86
|
+
</div>
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**规则**:只用于指标卡内(不与大图并存);无坐标轴、无网格;末点必须标圆点;高度 20–30。
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 57. 斜率图 `data-chart="slope"`
|
|
96
|
+
|
|
97
|
+
**用途**:两期排名/份额对比——**谁升谁降一目了然**(比双柱更直观)。**系列 ≤6 条**。
|
|
98
|
+
|
|
99
|
+
```html
|
|
100
|
+
<div class="fig">
|
|
101
|
+
<div class="fig__cap">各域试点率:一年之间谁升谁降</div>
|
|
102
|
+
<svg class="chart" data-chart="slope" viewBox="0 0 560 200">
|
|
103
|
+
<!-- 两期轴 -->
|
|
104
|
+
<line x1="90" y1="26" x2="90" y2="176" class="s-bds" stroke-width="1"/>
|
|
105
|
+
<line x1="470" y1="26" x2="470" y2="176" class="s-bds" stroke-width="1"/>
|
|
106
|
+
<text x="90" y="16" text-anchor="middle" class="f-txt3" font-size="11">2025</text>
|
|
107
|
+
<text x="470" y="16" text-anchor="middle" class="f-txt3" font-size="11">2026</text>
|
|
108
|
+
<!-- 4 条斜率线:强调最大涨幅(研发),其余中性 -->
|
|
109
|
+
<path d="M90,52 L470,75" class="f-none s-txt3" stroke-width="2"/>
|
|
110
|
+
<path d="M90,94 L470,83" class="f-none s-txt3" stroke-width="2"/>
|
|
111
|
+
<path d="M90,120 L470,100" class="f-none s-txt3" stroke-width="2"/>
|
|
112
|
+
<path d="M90,148 L470,92" class="f-none s-acc" stroke-width="2.5"/>
|
|
113
|
+
<circle cx="90" cy="52" r="4" class="f-txt3"/><circle cx="470" cy="75" r="4" class="f-txt3"/>
|
|
114
|
+
<circle cx="90" cy="94" r="4" class="f-txt3"/><circle cx="470" cy="83" r="4" class="f-txt3"/>
|
|
115
|
+
<circle cx="90" cy="120" r="4" class="f-txt3"/><circle cx="470" cy="100" r="4" class="f-txt3"/>
|
|
116
|
+
<circle cx="90" cy="148" r="5" class="f-acc"/><circle cx="470" cy="92" r="5" class="f-acc"/>
|
|
117
|
+
<!-- 端点数值(左:end 锚点 / 右:start 锚点) -->
|
|
118
|
+
<text x="78" y="56" text-anchor="end" class="f-txt3" font-size="11">客服 72%</text>
|
|
119
|
+
<text x="78" y="98" text-anchor="end" class="f-txt3" font-size="11">财务 57%</text>
|
|
120
|
+
<text x="78" y="124" text-anchor="end" class="f-txt3" font-size="11">营销 48%</text>
|
|
121
|
+
<text x="78" y="152" text-anchor="end" class="f-txt" font-size="11" font-weight="600">研发 38%</text>
|
|
122
|
+
<text x="482" y="79" class="f-txt3" font-size="11">64%</text>
|
|
123
|
+
<text x="482" y="87" class="f-txt3" font-size="11">61%</text>
|
|
124
|
+
<text x="482" y="104" class="f-txt3" font-size="11">55%</text>
|
|
125
|
+
<text x="482" y="96" class="f-acc" font-size="11" font-weight="600">58%</text>
|
|
126
|
+
</svg>
|
|
127
|
+
</div>
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**规则**:**只两条轴**(两期),不画网格;强调色只给"最值得说的那 1–2 条";标签必须两端都标(读者要能读出升降幅度)。
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## 58. 哑铃图 `data-chart="dumbbell"`
|
|
137
|
+
|
|
138
|
+
**用途**:同一指标的前后/两地对比(每行两点一线)。**行数 ≤6**。
|
|
139
|
+
|
|
140
|
+
```html
|
|
141
|
+
<div class="fig">
|
|
142
|
+
<div class="fig__cap">试点率 vs 规模化率:缺口即空间</div>
|
|
143
|
+
<svg class="chart" data-chart="dumbbell" viewBox="0 0 560 180">
|
|
144
|
+
<!-- 行:标签 + 底槽 + 连线 + 双点 + 数值 -->
|
|
145
|
+
<text x="0" y="34" class="f-txt2" font-size="12">客服</text>
|
|
146
|
+
<line x1="323" y1="30" x2="405" y2="30" class="s-txt3" stroke-width="2"/>
|
|
147
|
+
<circle cx="323" cy="30" r="6" class="f-s3"/>
|
|
148
|
+
<circle cx="405" cy="30" r="6" class="f-acc"/>
|
|
149
|
+
<text x="538" y="34" text-anchor="end" class="f-txt" font-size="11" font-weight="600">52 → 72%</text>
|
|
150
|
+
|
|
151
|
+
<text x="0" y="72" class="f-txt2" font-size="12">财务</text>
|
|
152
|
+
<line x1="299" y1="68" x2="344" y2="68" class="s-txt3" stroke-width="2"/>
|
|
153
|
+
<circle cx="299" cy="68" r="6" class="f-s3"/>
|
|
154
|
+
<circle cx="344" cy="68" r="6" class="f-acc"/>
|
|
155
|
+
<text x="538" y="72" text-anchor="end" class="f-txt" font-size="11" font-weight="600">46 → 57%</text>
|
|
156
|
+
|
|
157
|
+
<text x="0" y="110" class="f-txt2" font-size="12">营销</text>
|
|
158
|
+
<line x1="278" y1="106" x2="307" y2="106" class="s-txt3" stroke-width="2"/>
|
|
159
|
+
<circle cx="278" cy="106" r="6" class="f-s3"/>
|
|
160
|
+
<circle cx="307" cy="106" r="6" class="f-acc"/>
|
|
161
|
+
<text x="538" y="110" text-anchor="end" class="f-txt" font-size="11" font-weight="600">41 → 48%</text>
|
|
162
|
+
|
|
163
|
+
<text x="0" y="148" class="f-txt2" font-size="12">研发</text>
|
|
164
|
+
<line x1="266" y1="144" x2="348" y2="144" class="s-acc" stroke-width="2.5"/>
|
|
165
|
+
<circle cx="266" cy="144" r="6" class="f-s3"/>
|
|
166
|
+
<circle cx="348" cy="144" r="6" class="f-acc"/>
|
|
167
|
+
<text x="538" y="148" text-anchor="end" class="f-acc" font-size="11" font-weight="600">38 → 58%</text>
|
|
168
|
+
</svg>
|
|
169
|
+
</div>
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**规则**:起止点同一量纲(左右可标差值);**差距最大的一行用强调色连线**,其余中性;行高 34–38px。
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## 59. 棒棒糖图 `data-chart="lollipop"`
|
|
179
|
+
|
|
180
|
+
**用途**:排名 + 量值,比横向条形更轻(适合 5–8 项)。**行数 ≤8**。
|
|
181
|
+
|
|
182
|
+
```html
|
|
183
|
+
<div class="fig">
|
|
184
|
+
<div class="fig__cap">各域数据消费占比</div>
|
|
185
|
+
<svg class="chart" data-chart="lollipop" viewBox="0 0 560 160">
|
|
186
|
+
<line x1="100" y1="10" x2="100" y2="150" class="s-bds" stroke-width="1"/>
|
|
187
|
+
<text x="0" y="26" class="f-txt2" font-size="12">供应链</text>
|
|
188
|
+
<line x1="100" y1="22" x2="404" y2="22" class="s-acc" stroke-width="2"/>
|
|
189
|
+
<circle cx="404" cy="22" r="5" class="f-acc"/>
|
|
190
|
+
<text x="416" y="26" class="f-txt" font-size="11" font-weight="600">76%</text>
|
|
191
|
+
<text x="0" y="54" class="f-txt2" font-size="12">客服</text>
|
|
192
|
+
<line x1="100" y1="50" x2="388" y2="50" class="s-acc" stroke-width="2"/>
|
|
193
|
+
<circle cx="388" cy="50" r="5" class="f-acc"/>
|
|
194
|
+
<text x="400" y="54" class="f-txt" font-size="11" font-weight="600">72%</text>
|
|
195
|
+
<text x="0" y="82" class="f-txt2" font-size="12">财务</text>
|
|
196
|
+
<line x1="100" y1="78" x2="328" y2="78" class="s-txt3" stroke-width="2"/>
|
|
197
|
+
<circle cx="328" cy="78" r="5" class="f-s3"/>
|
|
198
|
+
<text x="340" y="82" class="f-txt2" font-size="11">57%</text>
|
|
199
|
+
<text x="0" y="110" class="f-txt2" font-size="12">营销</text>
|
|
200
|
+
<line x1="100" y1="106" x2="292" y2="106" class="s-txt3" stroke-width="2"/>
|
|
201
|
+
<circle cx="292" cy="106" r="5" class="f-s3"/>
|
|
202
|
+
<text x="304" y="110" class="f-txt2" font-size="11">48%</text>
|
|
203
|
+
<text x="0" y="138" class="f-txt2" font-size="12">研发</text>
|
|
204
|
+
<line x1="100" y1="134" x2="252" y2="134" class="s-txt3" stroke-width="2"/>
|
|
205
|
+
<circle cx="252" cy="134" r="5" class="f-s3"/>
|
|
206
|
+
<text x="264" y="138" class="f-txt2" font-size="11">38%</text>
|
|
207
|
+
</svg>
|
|
208
|
+
</div>
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
**规则**:按值降序排列;**强调色只给 Top 1–2 项**;行高 28–32px;数值标在点右侧。
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## 61. 玫瑰图 `data-chart="rose"`
|
|
218
|
+
|
|
219
|
+
**用途**:周期性 / 多维强度(极坐标雷达的"面积版",比雷达更强调单维突出)。**维度 ≤6**。
|
|
220
|
+
|
|
221
|
+
```html
|
|
222
|
+
<div class="fig" style="text-align:center">
|
|
223
|
+
<div class="fig__cap">六维就绪度(半径 ∝ 得分)</div>
|
|
224
|
+
<svg class="chart" data-chart="rose" viewBox="0 0 200 200" style="width:200px;margin-inline:auto">
|
|
225
|
+
<!-- 中心 100,100;6 个 60° 扇区,半径 88/66/78/52/70/44 -->
|
|
226
|
+
<path d="M100,100 L100,12 A88,88 0 0 1 176.2,56 Z" class="f-acc"/>
|
|
227
|
+
<path d="M100,100 L157.2,67 A66,66 0 0 1 157.2,133 Z" class="f-acc" fill-opacity=".75"/>
|
|
228
|
+
<path d="M100,100 L167.5,139 A78,78 0 0 1 100,178 Z" class="f-acc" fill-opacity=".55"/>
|
|
229
|
+
<path d="M100,100 L100,152 A52,52 0 0 1 55,126 Z" class="f-s3"/>
|
|
230
|
+
<path d="M100,100 L39.4,135 A70,70 0 0 1 39.4,65 Z" class="f-s3"/>
|
|
231
|
+
<path d="M100,100 L61.9,78 A44,44 0 0 1 100,56 Z" class="f-s2"/>
|
|
232
|
+
<circle cx="100" cy="100" r="2.5" class="f-txt3"/>
|
|
233
|
+
<text x="100" y="8" text-anchor="middle" class="f-txt2" font-size="10">语义</text>
|
|
234
|
+
<text x="186" y="54" text-anchor="middle" class="f-txt2" font-size="10">服务</text>
|
|
235
|
+
<text x="178" y="150" text-anchor="middle" class="f-txt2" font-size="10">消费</text>
|
|
236
|
+
<text x="100" y="196" text-anchor="middle" class="f-txt2" font-size="10">底座</text>
|
|
237
|
+
<text x="14" y="150" text-anchor="middle" class="f-txt2" font-size="10">安全</text>
|
|
238
|
+
<text x="22" y="54" text-anchor="middle" class="f-txt2" font-size="10">契约</text>
|
|
239
|
+
</svg>
|
|
240
|
+
</div>
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
**规则**:扇区角度均分、半径按值映射(**面积 ∝ 值的平方,勿线性映射半径**);显示直径 ≥180px;中心留白放维度总数;扇区色走 accent 明度阶梯。
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## 62. 点图 `data-chart="dotplot"`
|
|
250
|
+
|
|
251
|
+
**用途**:分布 / 离散程度(每个对象多个观测点,看分散与聚集)。**行 ≤6、每行点 ≤5**。
|
|
252
|
+
|
|
253
|
+
```html
|
|
254
|
+
<div class="fig">
|
|
255
|
+
<div class="fig__cap">各域试点率分布(三年观测)</div>
|
|
256
|
+
<svg class="chart" data-chart="dotplot" viewBox="0 0 560 150">
|
|
257
|
+
<!-- 轴:0 / 50 / 100 -->
|
|
258
|
+
<line x1="100" y1="16" x2="100" y2="134" class="s-bds" stroke-width="1"/>
|
|
259
|
+
<line x1="310" y1="16" x2="310" y2="134" class="s-bds" stroke-width="1" stroke-dasharray="3 4"/>
|
|
260
|
+
<line x1="520" y1="16" x2="520" y2="134" class="s-bds" stroke-width="1"/>
|
|
261
|
+
<text x="100" y="146" text-anchor="middle" class="f-txt3" font-size="10">0</text>
|
|
262
|
+
<text x="310" y="146" text-anchor="middle" class="f-txt3" font-size="10">50</text>
|
|
263
|
+
<text x="520" y="146" text-anchor="middle" class="f-txt3" font-size="10">100%</text>
|
|
264
|
+
<!-- 行:标签 + 观测点 -->
|
|
265
|
+
<text x="0" y="34" class="f-txt2" font-size="12">客服</text>
|
|
266
|
+
<circle cx="184" cy="30" r="5" class="f-s3"/><circle cx="247" cy="30" r="5" class="f-s3"/>
|
|
267
|
+
<circle cx="302" cy="30" r="5" class="f-acc"/>
|
|
268
|
+
<text x="0" y="62" class="f-txt2" font-size="12">财务</text>
|
|
269
|
+
<circle cx="289" cy="58" r="5" class="f-s3"/><circle cx="344" cy="58" r="5" class="f-s3"/>
|
|
270
|
+
<circle cx="377" cy="58" r="5" class="f-acc"/>
|
|
271
|
+
<text x="0" y="90" class="f-txt2" font-size="12">营销</text>
|
|
272
|
+
<circle cx="360" cy="86" r="5" class="f-s3"/><circle cx="398" cy="86" r="5" class="f-s3"/>
|
|
273
|
+
<circle cx="428" cy="86" r="5" class="f-acc"/>
|
|
274
|
+
<text x="0" y="118" class="f-txt2" font-size="12">研发</text>
|
|
275
|
+
<circle cx="226" cy="114" r="5" class="f-s3"/><circle cx="285" cy="114" r="5" class="f-s3"/>
|
|
276
|
+
<circle cx="318" cy="114" r="5" class="f-acc"/>
|
|
277
|
+
</svg>
|
|
278
|
+
</div>
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
**规则**:**点重叠时轻微错位**(jitter ≤3px)或用空心圈表示重复;最新一期用强调色点,历史期用中性;行高 28px。
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## 63. 子弹图 `data-chart="bulletchart"`
|
|
288
|
+
|
|
289
|
+
**用途**:目标 vs 实际 + **定性区间背景**(差/中/优三档),比 bullet 页型多一层"区间参照"。**行数 ≤6**。
|
|
290
|
+
|
|
291
|
+
```html
|
|
292
|
+
<div class="fig">
|
|
293
|
+
<div class="fig__cap">四项能力:实际条 vs 目标刻度(背景为三档区间)</div>
|
|
294
|
+
<svg class="chart" data-chart="bulletchart" viewBox="0 0 560 160">
|
|
295
|
+
<!-- 行 1:背景三档(0-60 / 60-85 / 85-100)+ 实际条 + 目标线 -->
|
|
296
|
+
<text x="0" y="34" class="f-txt2" font-size="12">场景覆盖</text>
|
|
297
|
+
<rect x="100" y="23" width="252" height="14" class="f-s1"/>
|
|
298
|
+
<rect x="352" y="23" width="105" height="14" class="f-s2"/>
|
|
299
|
+
<rect x="457" y="23" width="63" height="14" class="f-s3"/>
|
|
300
|
+
<rect x="100" y="23" width="256" height="14" class="f-acc"/>
|
|
301
|
+
<line x1="436" y1="18" x2="436" y2="42" class="s-txt3" stroke-width="2.5"/>
|
|
302
|
+
<text x="538" y="34" text-anchor="end" class="f-txt" font-size="11" font-weight="600">61 / 80%</text>
|
|
303
|
+
|
|
304
|
+
<text x="0" y="68" class="f-txt2" font-size="12">治理就绪</text>
|
|
305
|
+
<rect x="100" y="57" width="252" height="14" class="f-s1"/>
|
|
306
|
+
<rect x="352" y="57" width="105" height="14" class="f-s2"/>
|
|
307
|
+
<rect x="457" y="57" width="63" height="14" class="f-s3"/>
|
|
308
|
+
<rect x="100" y="57" width="143" height="14" class="f-acc" fill-opacity=".75"/>
|
|
309
|
+
<line x1="415" y1="52" x2="415" y2="76" class="s-txt3" stroke-width="2.5"/>
|
|
310
|
+
<text x="538" y="68" text-anchor="end" class="f-txt" font-size="11" font-weight="600">34 / 75%</text>
|
|
311
|
+
|
|
312
|
+
<text x="0" y="102" class="f-txt2" font-size="12">工具集成</text>
|
|
313
|
+
<rect x="100" y="91" width="252" height="14" class="f-s1"/>
|
|
314
|
+
<rect x="352" y="91" width="105" height="14" class="f-s2"/>
|
|
315
|
+
<rect x="457" y="91" width="63" height="14" class="f-s3"/>
|
|
316
|
+
<rect x="100" y="91" width="176" height="14" class="f-acc" fill-opacity=".75"/>
|
|
317
|
+
<line x1="394" y1="86" x2="394" y2="110" class="s-txt3" stroke-width="2.5"/>
|
|
318
|
+
<text x="538" y="102" text-anchor="end" class="f-txt" font-size="11" font-weight="600">42 / 70%</text>
|
|
319
|
+
|
|
320
|
+
<text x="0" y="136" class="f-txt2" font-size="12">规模化运行</text>
|
|
321
|
+
<rect x="100" y="125" width="252" height="14" class="f-s1"/>
|
|
322
|
+
<rect x="352" y="125" width="105" height="14" class="f-s2"/>
|
|
323
|
+
<rect x="457" y="125" width="63" height="14" class="f-s3"/>
|
|
324
|
+
<rect x="100" y="125" width="76" height="14" class="f-s3"/>
|
|
325
|
+
<line x1="352" y1="120" x2="352" y2="144" class="s-txt3" stroke-width="2.5"/>
|
|
326
|
+
<text x="538" y="136" text-anchor="end" class="f-txt3" font-size="11" font-weight="600">18 / 60%</text>
|
|
327
|
+
</svg>
|
|
328
|
+
</div>
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
**规则**:三档区间用 `f-s1/f-s2/f-s3`(中性明度差,**不引入红绿**);实际条压区间之上;目标线为竖线;未达标行实际条转中性色(`f-s3`);数值统一"实际 / 目标"。
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
## 65. 华夫图(构成占比 · 每格 1%)`data-chart="waffle"`
|
|
338
|
+
|
|
339
|
+
**用途**:把百分比画成 10×10 点阵——**每格 = 1%**,比饼图更易比较"差几格"。适合"覆盖率 / 达成率 / 构成占比"这类单一比例叙事。**类别 ≤3 组**(多组改用 marimekko / treemap)。
|
|
340
|
+
|
|
341
|
+
```html
|
|
342
|
+
<div class="fig">
|
|
343
|
+
<div class="fig__cap">可信数据覆盖率 46%(每格 = 1%)</div>
|
|
344
|
+
<svg class="chart" data-chart="waffle" viewBox="0 0 560 190">
|
|
345
|
+
<g transform="translate(16,16)">
|
|
346
|
+
<path class="f-s1" d="M144 108h15v15h-15z M162 108h15v15h-15z M0 126h15v15h-15z M18 126h15v15h-15z M36 126h15v15h-15z M54 126h15v15h-15z M72 126h15v15h-15z M90 126h15v15h-15z M108 126h15v15h-15z M126 126h15v15h-15z M144 126h15v15h-15z M162 126h15v15h-15z M0 144h15v15h-15z M18 144h15v15h-15z M36 144h15v15h-15z M54 144h15v15h-15z M72 144h15v15h-15z M90 144h15v15h-15z M108 144h15v15h-15z M126 144h15v15h-15z M144 144h15v15h-15z M162 144h15v15h-15z M0 162h15v15h-15z M18 162h15v15h-15z M36 162h15v15h-15z M54 162h15v15h-15z M72 162h15v15h-15z M90 162h15v15h-15z M108 162h15v15h-15z M126 162h15v15h-15z M144 162h15v15h-15z M162 162h15v15h-15z"/>
|
|
347
|
+
<path class="f-accs" d="M108 72h15v15h-15z M126 72h15v15h-15z M144 72h15v15h-15z M162 72h15v15h-15z M0 90h15v15h-15z M18 90h15v15h-15z M36 90h15v15h-15z M54 90h15v15h-15z M72 90h15v15h-15z M90 90h15v15h-15z M108 90h15v15h-15z M126 90h15v15h-15z M144 90h15v15h-15z M162 90h15v15h-15z M0 108h15v15h-15z M18 108h15v15h-15z M36 108h15v15h-15z M54 108h15v15h-15z M72 108h15v15h-15z M90 108h15v15h-15z M108 108h15v15h-15z M126 108h15v15h-15z"/>
|
|
348
|
+
<path class="f-acc" d="M0 0h15v15h-15z M18 0h15v15h-15z M36 0h15v15h-15z M54 0h15v15h-15z M72 0h15v15h-15z M90 0h15v15h-15z M108 0h15v15h-15z M126 0h15v15h-15z M144 0h15v15h-15z M162 0h15v15h-15z M0 18h15v15h-15z M18 18h15v15h-15z M36 18h15v15h-15z M54 18h15v15h-15z M72 18h15v15h-15z M90 18h15v15h-15z M108 18h15v15h-15z M126 18h15v15h-15z M144 18h15v15h-15z M162 18h15v15h-15z M0 36h15v15h-15z M18 36h15v15h-15z M36 36h15v15h-15z M54 36h15v15h-15z M72 36h15v15h-15z M90 36h15v15h-15z M108 36h15v15h-15z M126 36h15v15h-15z M144 36h15v15h-15z M162 36h15v15h-15z M0 54h15v15h-15z M18 54h15v15h-15z M36 54h15v15h-15z M54 54h15v15h-15z M72 54h15v15h-15z M90 54h15v15h-15z M108 54h15v15h-15z M126 54h15v15h-15z M144 54h15v15h-15z M162 54h15v15h-15z M0 72h15v15h-15z M18 72h15v15h-15z M36 72h15v15h-15z M54 72h15v15h-15z M72 72h15v15h-15z M90 72h15v15h-15z"/>
|
|
349
|
+
</g>
|
|
350
|
+
<g transform="translate(230,40)" font-size="13">
|
|
351
|
+
<rect x="0" y="0" width="13" height="13" class="f-acc"/>
|
|
352
|
+
<text x="22" y="12" class="f-txt" font-weight="600">46% 已覆盖</text>
|
|
353
|
+
<rect x="0" y="30" width="13" height="13" class="f-accs"/>
|
|
354
|
+
<text x="22" y="42" class="f-txt2">22% 建设中</text>
|
|
355
|
+
<rect x="0" y="60" width="13" height="13" class="f-s1"/>
|
|
356
|
+
<text x="22" y="72" class="f-txt2">32% 待启动</text>
|
|
357
|
+
<text x="0" y="108" class="f-txt3" font-size="11">口径:纳入可信清单的数据集 / 全量数据集</text>
|
|
358
|
+
</g>
|
|
359
|
+
</svg>
|
|
360
|
+
</div>
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
**规则**:三组以内用 `f-acc / f-accs / f-s1`(同色相明度阶梯);**格数必须严格等于百分比**(46% = 46 格);点阵按行优先填色;不写死色值。
|
|
364
|
+
|
|
365
|
+
---
|
|
366
|
+
|
|
367
|
+
---
|
|
368
|
+
|
|
369
|
+
## 67. 帕累托图(主因排序 · 二八分析)`data-chart="pareto"`
|
|
370
|
+
|
|
371
|
+
**用途**:降序柱 + 累计占比折线 + **80% 参考线**——一眼看出"哪几项贡献了大部分"。**类别 ≤7**。
|
|
372
|
+
|
|
373
|
+
```html
|
|
374
|
+
<div class="fig">
|
|
375
|
+
<div class="fig__cap">六类缺陷:前 3 类贡献 77% 的问题量</div>
|
|
376
|
+
<svg class="chart" data-chart="pareto" viewBox="0 0 560 200">
|
|
377
|
+
<line x1="72" y1="160" x2="500" y2="160" class="s-bd"/>
|
|
378
|
+
<!-- 80% 参考线 -->
|
|
379
|
+
<line x1="72" y1="56" x2="500" y2="56" class="s-txt3" stroke-width="1" stroke-dasharray="4 4"/>
|
|
380
|
+
<text x="504" y="60" class="f-txt3" font-size="10">80%</text>
|
|
381
|
+
<!-- 柱(降序) -->
|
|
382
|
+
<rect x="72" y="30" width="56" height="130" class="f-acc"/>
|
|
383
|
+
<rect x="138" y="78" width="56" height="82" class="f-acc" fill-opacity=".82"/>
|
|
384
|
+
<rect x="204" y="109" width="56" height="51" class="f-acc" fill-opacity=".68"/>
|
|
385
|
+
<rect x="270" y="122" width="56" height="38" class="f-s2"/>
|
|
386
|
+
<rect x="336" y="136" width="56" height="24" class="f-s2"/>
|
|
387
|
+
<rect x="402" y="143" width="56" height="17" class="f-s2"/>
|
|
388
|
+
<!-- 累计占比折线 -->
|
|
389
|
+
<polyline points="100,111 166,79 232,60 298,46 364,37 430,30" fill="none"
|
|
390
|
+
class="s-acc" stroke-width="2.5"/>
|
|
391
|
+
<g class="f-acc">
|
|
392
|
+
<circle cx="100" cy="111" r="3.5"/><circle cx="166" cy="79" r="3.5"/>
|
|
393
|
+
<circle cx="232" cy="60" r="3.5"/><circle cx="298" cy="46" r="3.5"/>
|
|
394
|
+
<circle cx="364" cy="37" r="3.5"/><circle cx="430" cy="30" r="3.5"/>
|
|
395
|
+
</g>
|
|
396
|
+
<!-- 类别标签 -->
|
|
397
|
+
<g class="f-txt2" font-size="10" text-anchor="middle">
|
|
398
|
+
<text x="100" y="176">口径缺失</text><text x="166" y="176">字段空值</text>
|
|
399
|
+
<text x="232" y="176">更新延迟</text><text x="298" y="176">重复入库</text>
|
|
400
|
+
<text x="364" y="176">权限错配</text><text x="430" y="176">其他</text>
|
|
401
|
+
</g>
|
|
402
|
+
</svg>
|
|
403
|
+
</div>
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
**规则**:柱**必须降序**;累计线走 `s-acc` + `f-acc` 点;80% 线用虚线(`s-txt3`);前 N 项(累计 ≤80%)用 accent,其余转 `f-s2`;数值标柱顶,不重复标左右轴。
|
|
407
|
+
|
|
408
|
+
---
|
|
409
|
+
|
|
410
|
+
---
|
|
411
|
+
|
|
412
|
+
## 68. 径向条形图(多指标达成率)`data-chart="radialbar"`
|
|
413
|
+
|
|
414
|
+
**用途**:多指标达成率画成**同心环**——比并排进度条更紧凑,适合"一屏四指标"。**环数 ≤5**。注意:需内联 `style="width:200px"` 以上(校验器按 `pxWidthMin` 核)。
|
|
415
|
+
|
|
416
|
+
```html
|
|
417
|
+
<div class="fig">
|
|
418
|
+
<div class="fig__cap">四项能力成熟度(同心环,自外向内)</div>
|
|
419
|
+
<svg class="chart" data-chart="radialbar" viewBox="0 0 240 240" style="width:240px">
|
|
420
|
+
<g transform="rotate(-90 120 120)" fill="none" stroke-width="15">
|
|
421
|
+
<circle cx="120" cy="120" r="100" class="s-bd" stroke-opacity=".45"/>
|
|
422
|
+
<circle cx="120" cy="120" r="100" class="s-acc" stroke-linecap="round" stroke-dasharray="471 157"/>
|
|
423
|
+
<circle cx="120" cy="120" r="80" class="s-bd" stroke-opacity=".45"/>
|
|
424
|
+
<circle cx="120" cy="120" r="80" class="s-acc" stroke-linecap="round" stroke-opacity=".85" stroke-dasharray="302 201"/>
|
|
425
|
+
<circle cx="120" cy="120" r="60" class="s-bd" stroke-opacity=".45"/>
|
|
426
|
+
<circle cx="120" cy="120" r="60" class="s-acc" stroke-linecap="round" stroke-opacity=".7" stroke-dasharray="170 207"/>
|
|
427
|
+
<circle cx="120" cy="120" r="40" class="s-bd" stroke-opacity=".45"/>
|
|
428
|
+
<circle cx="120" cy="120" r="40" class="s-acc" stroke-linecap="round" stroke-opacity=".55" stroke-dasharray="75 176"/>
|
|
429
|
+
</g>
|
|
430
|
+
<text x="120" y="114" text-anchor="middle" class="f-txt" font-size="26" font-weight="700">75%</text>
|
|
431
|
+
<text x="120" y="134" text-anchor="middle" class="f-txt3" font-size="11">平台成熟度</text>
|
|
432
|
+
</svg>
|
|
433
|
+
</div>
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
**规则**:底环 `s-bd`(低透明)+ 进度环 `s-acc`(**明度阶梯区分,不引入多色相**);`stroke-dasharray` = `周长×达成率` + 剩余(周长 = 2πr);统一 `rotate(-90 圆心)` 从 12 点起画;中心放总量或首要指标。
|
|
437
|
+
|
|
438
|
+
---
|
|
439
|
+
|
|
440
|
+
---
|
|
441
|
+
|
|
442
|
+
## 70. K 线图(区间波动 · 开高低收)`data-chart="candlestick"`
|
|
443
|
+
|
|
444
|
+
**用途**:每个时间点的**开 / 高 / 低 / 收**——波动幅度与方向。适合"价格 / 评分 / 指标的区间波动"。**蜡烛 ≤12 根**。
|
|
445
|
+
|
|
446
|
+
```html
|
|
447
|
+
<div class="fig">
|
|
448
|
+
<div class="fig__cap">八期评分波动(实体 = 开收,须 = 高低)</div>
|
|
449
|
+
<svg class="chart" data-chart="candlestick" viewBox="0 0 560 200">
|
|
450
|
+
<line x1="60" y1="180" x2="540" y2="180" class="s-bd"/>
|
|
451
|
+
<!-- 上涨(收 > 开)= accent;下跌 = 中性 f-s3(不引入红绿) -->
|
|
452
|
+
<g class="s-acc" stroke-width="1.5">
|
|
453
|
+
<line x1="80" y1="103" x2="80" y2="161"/><line x1="200" y1="98" x2="200" y2="137"/>
|
|
454
|
+
<line x1="260" y1="55" x2="260" y2="108"/><line x1="440" y1="70" x2="440" y2="103"/>
|
|
455
|
+
<line x1="500" y1="41" x2="500" y2="79"/>
|
|
456
|
+
</g>
|
|
457
|
+
<g class="f-acc">
|
|
458
|
+
<rect x="67" y="113" width="26" height="31"/><rect x="187" y="103" width="26" height="19"/>
|
|
459
|
+
<rect x="247" y="65" width="26" height="38"/><rect x="427" y="74" width="26" height="14"/>
|
|
460
|
+
<rect x="487" y="48" width="26" height="26"/>
|
|
461
|
+
</g>
|
|
462
|
+
<g class="s-txt3" stroke-width="1.5">
|
|
463
|
+
<line x1="140" y1="84" x2="140" y2="127"/><line x1="320" y1="48" x2="320" y2="84"/>
|
|
464
|
+
<line x1="380" y1="65" x2="380" y2="98"/>
|
|
465
|
+
</g>
|
|
466
|
+
<g class="f-s3">
|
|
467
|
+
<rect x="127" y="113" width="26" height="10"/><rect x="307" y="65" width="26" height="12"/>
|
|
468
|
+
<rect x="367" y="77" width="26" height="12"/>
|
|
469
|
+
</g>
|
|
470
|
+
<g class="f-txt3" font-size="10" text-anchor="middle">
|
|
471
|
+
<text x="80" y="194">1</text><text x="140" y="194">2</text><text x="200" y="194">3</text>
|
|
472
|
+
<text x="260" y="194">4</text><text x="320" y="194">5</text><text x="380" y="194">6</text>
|
|
473
|
+
<text x="440" y="194">7</text><text x="500" y="194">8</text>
|
|
474
|
+
</g>
|
|
475
|
+
</svg>
|
|
476
|
+
</div>
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
**规则**:**不引入红绿**——上涨用 `f-acc` 实体 + `s-acc` 须,下跌用 `f-s3` 实体 + `s-txt3` 须;实体宽度一致、须为 1.5px 竖线;坐标轴只标时间序号,数值靠图注给区间。
|
|
480
|
+
|
|
481
|
+
---
|
|
482
|
+
|