like-sci-figures 0.0.0-stage → 1.0.0

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.
Files changed (83) hide show
  1. package/LICENSE +56 -0
  2. package/README.md +93 -2
  3. package/cli.js +79 -0
  4. package/examples/area.json +9 -0
  5. package/examples/bar.json +15 -0
  6. package/examples/bland_altman.json +128 -0
  7. package/examples/bode.json +8 -0
  8. package/examples/box.json +8 -0
  9. package/examples/bubble.json +7 -0
  10. package/examples/contour.json +10 -0
  11. package/examples/corr_matrix.json +99 -0
  12. package/examples/dendrogram.json +5 -0
  13. package/examples/density.json +8 -0
  14. package/examples/dot_plot.json +8 -0
  15. package/examples/ecdf.json +377 -0
  16. package/examples/errorbar.json +7 -0
  17. package/examples/forest.json +12 -0
  18. package/examples/heatmap.json +10 -0
  19. package/examples/hexbin.json +6009 -0
  20. package/examples/histogram.json +6 -0
  21. package/examples/kaplan_meier.json +6 -0
  22. package/examples/line.json +11 -0
  23. package/examples/manhattan.json +7 -0
  24. package/examples/panels.json +28 -0
  25. package/examples/pca.json +12 -0
  26. package/examples/periodogram.json +7 -0
  27. package/examples/pie.json +4 -0
  28. package/examples/radar.json +7 -0
  29. package/examples/ridge.json +11 -0
  30. package/examples/roc.json +6 -0
  31. package/examples/sankey.json +9 -0
  32. package/examples/scatter3d.json +6 -0
  33. package/examples/slope.json +6 -0
  34. package/examples/stacked_bar.json +12 -0
  35. package/examples/surface.json +11 -0
  36. package/examples/taylor.json +9 -0
  37. package/examples/ternary.json +18 -0
  38. package/examples/venn.json +12 -0
  39. package/examples/violin.json +9 -0
  40. package/examples/volcano.json +7 -0
  41. package/examples/waterfall.json +5 -0
  42. package/examples/windrose.json +407 -0
  43. package/package.json +33 -4
  44. package/requirements.txt +9 -0
  45. package/scripts/add_chart.py +201 -0
  46. package/scripts/build_gallery.py +360 -0
  47. package/scripts/chart_plugin.py +153 -0
  48. package/scripts/data_loader.py +260 -0
  49. package/scripts/fig_3d.py +103 -0
  50. package/scripts/fig_area.py +57 -0
  51. package/scripts/fig_bar.py +117 -0
  52. package/scripts/fig_biomed.py +289 -0
  53. package/scripts/fig_box.py +60 -0
  54. package/scripts/fig_bubble.py +65 -0
  55. package/scripts/fig_core.py +195 -0
  56. package/scripts/fig_datasci.py +276 -0
  57. package/scripts/fig_distribution.py +59 -0
  58. package/scripts/fig_engineering.py +224 -0
  59. package/scripts/fig_environ.py +239 -0
  60. package/scripts/fig_errorbar.py +49 -0
  61. package/scripts/fig_forest.py +54 -0
  62. package/scripts/fig_heatmap.py +51 -0
  63. package/scripts/fig_line.py +39 -0
  64. package/scripts/fig_pca.py +101 -0
  65. package/scripts/fig_pie.py +52 -0
  66. package/scripts/fig_radar.py +32 -0
  67. package/scripts/fig_sankey.py +196 -0
  68. package/scripts/fig_scatter.py +44 -0
  69. package/scripts/fig_subplots.py +124 -0
  70. package/scripts/fig_taylor.py +80 -0
  71. package/scripts/fig_venn.py +80 -0
  72. package/scripts/fig_windrose.py +82 -0
  73. package/scripts/font_detector.py +85 -0
  74. package/scripts/gen_figure.py +583 -0
  75. package/scripts/generate_samples.py +322 -0
  76. package/scripts/palette_picker.py +244 -0
  77. package/scripts/palette_pref.py +179 -0
  78. package/scripts/palette_preview.py +334 -0
  79. package/scripts/palettes.py +461 -0
  80. package/scripts/registry.py +138 -0
  81. package/scripts/render_utils.py +233 -0
  82. package/scripts/showcase.py +179 -0
  83. package/scripts/style_manager.py +267 -0
package/LICENSE ADDED
@@ -0,0 +1,56 @@
1
+ LIKE Sci Figures — Source-Available License (v1.2.0)
2
+ Copyright (c) 2026 LIKE
3
+
4
+ -------------------------------------------------------------------------------
5
+ 本作品(LIKE Sci Figures / like-sci-figures,下称"本软件")
6
+ 基于 SkillHub 上 science-figures v1.0.1(MIT 兼容社区技能)二次开发而来。
7
+ 上游作者的原始版权与 MIT 许可条款随上游代码保留(见文末"上游归属"),
8
+ 本派生作品的增量贡献按本许可证发布。
9
+ -------------------------------------------------------------------------------
10
+
11
+ 授予的权利(允许)
12
+
13
+ 1. 个人与学术使用:为个人科研、教学、学术论文 / 学位论文 / 期刊投稿 / 会议
14
+ 海报 / 汇报材料的配图,安装、运行、复制、修改本软件。此类使用无需授权费。
15
+ 2. 平台分发:在 SkillHub 平台按其官方分发机制安装与分发本软件。
16
+ 3. 内部评估:为评估本软件是否适合某项目而进行的内部试用。
17
+
18
+ 限制(不得)
19
+
20
+ 4. 商业性再分发 / 转售:不得将本软件或其任何部分、修改版本,作为独立产品或
21
+ 服务的核心,进行商业性转售、再分发、出租或对外授权。
22
+ 5. 竞争性产品:不得将本软件的源码(或其修改版)用于开发、发布、销售任何与本
23
+ 软件构成竞争关系的产品 / 服务,或用于其他商业目的的产品化。
24
+ 6. 版权移除:不得移除或遮盖本软件中的版权声明、本许可证、水印标识。
25
+
26
+ 免责声明
27
+
28
+ 本软件按"AS IS"提供,不附带任何明示或暗示的担保,包括但不限于对适销性、
29
+ 特定用途适用性及非侵权的担保。在任何情况下,作者或版权持有人均不对任何
30
+ 索赔、损害或其他责任负责,无论是否因合同、侵权或其他原因引起,且无论是否
31
+ 源于本软件或本软件的使用或其他交易。
32
+
33
+ -------------------------------------------------------------------------------
34
+ 上游归属(MIT License,适用于 science-figures 原始贡献部分)
35
+
36
+ MIT License
37
+
38
+ Copyright (c) 上游作者(science-figures v1.0.1 原始权利持有人)
39
+
40
+ Permission is hereby granted, free of charge, to any person obtaining a copy
41
+ of this software and associated documentation files (the "Software"), to deal
42
+ in the Software without restriction, including without limitation the rights
43
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
44
+ copies of the Software, and to permit persons to whom the Software is
45
+ furnished to do so, subject to the following conditions:
46
+
47
+ The above copyright notice and this permission notice shall be included in all
48
+ copies or substantial portions of the Software.
49
+
50
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
51
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
52
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
53
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
54
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
55
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
56
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,94 @@
1
- # Temporary Holding Version
1
+ # like-sci-figures
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ > **Publication-quality academic figure generator** — 40 chart types, 11 journal styles, 34 curated color palettes, CJK auto-detection, 300DPI output. Pure local.
4
+
5
+ Generate publication-ready figures for academic papers, theses, posters, and research reports from JSON/CSV data files. Powered by [scienceplots](https://github.com/garrettj403/SciencePlots) + [matplotlib](https://matplotlib.org/). No GUI, no cloud, **no data leaving your machine**.
6
+
7
+ ```bash
8
+ # 安装
9
+ npm install -g like-sci-figures
10
+
11
+ # 生成图表
12
+ like-sci-figures --type bar --data data.json --out figure.png --style nature
13
+ ```
14
+
15
+ ---
16
+
17
+ ## Requirements
18
+
19
+ - **Python 3.9+** (must be on PATH, or set `LIKE_SCI_PYTHON`)
20
+ - Python dependencies: `matplotlib`, `numpy`, `scipy`, `pillow`
21
+
22
+ ```bash
23
+ python -m pip install -r requirements.txt
24
+ # 可选:启用 LaTeX 级期刊风格(内置等效样式会自动后备)
25
+ pip install scienceplots
26
+ ```
27
+
28
+ ## Features
29
+
30
+ - **40 chart types**: bar, grouped bar, stacked bar, heatmap, scatter, line, box, violin, forest, histogram, density, pie, donut, radar, 3D surface, contour, 3D scatter, bubble, area/stacked-area, error-bar, Venn, PCA biplot, wind rose, Taylor diagram, Sankey, multi-panel subplots, volcano, Manhattan, Kaplan-Meier, ROC, ridge, ternary, dot plot, dendrogram, slope, waterfall, Bode, periodogram, correlation matrix, hexbin density, ECDF, Bland-Altman
31
+ - **11 journal styles**: Nature, Science, IEEE, Springer, Lancet, ACS, APS, AAAS, Cell, NEJM, MDPI
32
+ - **34 curated color palettes**: qualitative / sequential / diverging sets via `--palette`, or pass your own hex list
33
+ - **CJK auto-detection**: automatically loads Chinese/Japanese/Korean fonts when needed
34
+ - **Output**: PNG / SVG / PDF at 300 DPI (adjustable via `--dpi`)
35
+
36
+ ## CLI Usage
37
+
38
+ ```bash
39
+ like-sci-figures --type <chart> --data <file.json|csv> --out <output.png|svg|pdf> [options]
40
+ ```
41
+
42
+ | Option | Description |
43
+ | --- | --- |
44
+ | `--type, -t` | Chart type (required). See full list below. |
45
+ | `--data, -d` | Input data file (JSON or CSV) |
46
+ | `--out, -o` | Output path (`.png` / `.svg` / `.pdf`) |
47
+ | `--title` | Figure title (use `\n` for newline) |
48
+ | `--xlabel` / `--ylabel` | Axis labels |
49
+ | `--style, -s` | Journal style (default `nature`) |
50
+ | `--palette, -p` | Color palette slug or custom hex list |
51
+ | `--dpi` | Output resolution (default 300) |
52
+ | `--list-styles` | List available journal styles and exit |
53
+ | `--list-palettes` | List available palettes and exit |
54
+ | `--verify-all` | Run full engine self-check |
55
+
56
+ ### Chart types
57
+
58
+ `bar` `grouped bar` `stacked bar` `heatmap` `scatter` `line` `box` `violin` `forest` `histogram` `density` `pie` `donut` `radar` `surface` `contour` `scatter3d` `bubble` `area` `errorbar` `venn` `pca` `windrose` `taylor` `sankey` `subplots` `volcano` `manhattan` `kaplan_meier` `roc` `ridge` `ternary` `dotplot` `dendrogram` `slope` `waterfall` `bode` `periodogram` `corr_matrix` `hexbin` `ecdf` `bland_altman`
59
+
60
+ ### Examples
61
+
62
+ ```bash
63
+ # Nature-style bar chart with value labels
64
+ like-sci-figures --type bar --data data.json --out figure.png --style nature --show-values
65
+
66
+ # Correlation matrix heatmap (diverging palette)
67
+ like-sci-figures --type corr_matrix --data corr.json --out corr.png --palette wx06_amber_navy
68
+
69
+ # Hexbin density plot with 1:1 line
70
+ like-sci-figures --type hexbin --data obs.json --out hex.png --style cell --palette viridis
71
+
72
+ # Multi-panel subplots
73
+ like-sci-figures --type subplots --data panel.json --out grid.png --layout 2x3 --style ieee
74
+ ```
75
+
76
+ ## Data Format
77
+
78
+ JSON/CSV with a flexible schema that adapts to each chart type. Example for a bar chart:
79
+
80
+ ```json
81
+ {
82
+ "categories": ["PM2.5", "PM10", "SO2", "NO2"],
83
+ "values": [38.2, 61.4, 9.1, 24.6],
84
+ "errors": [3.1, 4.2, 0.8, 2.0]
85
+ }
86
+ ```
87
+
88
+ ## Environment
89
+
90
+ - `LIKE_SCI_PYTHON` — path to a specific Python interpreter (default: `python` / `python3` on PATH)
91
+
92
+ ## License
93
+
94
+ Source-Available License (see `LICENSE`). Personal and academic use permitted; commercial redistribution and competing productization prohibited. Upstream MIT attribution preserved.
package/cli.js ADDED
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ /**
5
+ * like-sci-figures — npm CLI 入口
6
+ *
7
+ * 本包是 Python 图表引擎(skill/scripts/)的轻量 Node 包装器:
8
+ * 定位 Python 解释器 → 检查依赖 → 透传全部参数给 scripts/gen_figure.py。
9
+ * 引擎本身是纯 Python(matplotlib + scienceplots),本文件只负责调度与报错。
10
+ *
11
+ * 环境变量:
12
+ * LIKE_SCI_PYTHON 指定 Python 解释器路径(默认依次尝试 python / python3)
13
+ */
14
+
15
+ const { spawn, spawnSync } = require('child_process');
16
+ const path = require('path');
17
+ const fs = require('fs');
18
+
19
+ const PKG_DIR = __dirname;
20
+ const ENGINE = path.join(PKG_DIR, 'scripts', 'gen_figure.py');
21
+ const REQ_FILE = path.join(PKG_DIR, 'requirements.txt');
22
+
23
+ function findPython() {
24
+ const candidates = [];
25
+ if (process.env.LIKE_SCI_PYTHON) candidates.push(process.env.LIKE_SCI_PYTHON);
26
+ candidates.push('python', 'python3');
27
+ for (const c of candidates) {
28
+ try {
29
+ const r = spawnSync(c, ['--version'], { encoding: 'utf8' });
30
+ if (r.status === 0) return { cmd: c, viaEnv: c === process.env.LIKE_SCI_PYTHON };
31
+ } catch (e) { /* keep trying */ }
32
+ }
33
+ return null;
34
+ }
35
+
36
+ function checkDeps(py) {
37
+ const r = spawnSync(
38
+ py,
39
+ ['-c', 'import matplotlib, numpy, scipy, PIL, sys'],
40
+ { encoding: 'utf8' }
41
+ );
42
+ if (r.status === 0) return null;
43
+ return (r.stderr || r.stdout || '').trim();
44
+ }
45
+
46
+ const py = findPython();
47
+ if (!py) {
48
+ console.error(
49
+ '[like-sci-figures] 未找到 Python 解释器。\n' +
50
+ ' 请安装 Python 3.9+ 并加入 PATH,或通过环境变量指定:\n' +
51
+ ' set LIKE_SCI_PYTHON=C:\\path\\to\\python.exe (Windows)\n' +
52
+ ' export LIKE_SCI_PYTHON=/usr/bin/python3 (macOS/Linux)'
53
+ );
54
+ process.exit(1);
55
+ }
56
+
57
+ const depErr = checkDeps(py.cmd);
58
+ if (depErr) {
59
+ console.error(
60
+ '[like-sci-figures] Python 依赖缺失(matplotlib / numpy / scipy / pillow)。\n' +
61
+ ' 请安装依赖:\n' +
62
+ ' ' + py.cmd + ' -m pip install -r ' + REQ_FILE + '\n' +
63
+ ' 缺失详情:\n' + depErr
64
+ );
65
+ process.exit(1);
66
+ }
67
+
68
+ if (!fs.existsSync(ENGINE)) {
69
+ console.error('[like-sci-figures] 引擎缺失:' + ENGINE);
70
+ process.exit(1);
71
+ }
72
+
73
+ // 透传所有 CLI 参数给 Python 引擎;stdin/out/err 继承
74
+ const child = spawn(py.cmd, [ENGINE, ...process.argv.slice(2)], { stdio: 'inherit' });
75
+ child.on('error', (err) => {
76
+ console.error('[like-sci-figures] 无法启动引擎:' + err.message);
77
+ process.exit(1);
78
+ });
79
+ child.on('exit', (code) => process.exit(code === null ? 0 : code));
@@ -0,0 +1,9 @@
1
+ {
2
+ "labels": ["Jan", "Feb", "Mar", "Apr", "May"],
3
+ "series": {
4
+ "Coal": [20, 25, 30, 28, 22],
5
+ "Vehicle": [15, 18, 22, 25, 30],
6
+ "Dust": [10, 12, 11, 13, 14]
7
+ },
8
+ "stacked": true
9
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "labels": ["Control", "Treat A", "Treat B", "Treat C"],
3
+ "series": {
4
+ "Metric 1": [12.5, 18.3, 15.2, 21.0],
5
+ "Metric 2": [10.0, 14.5, 16.8, 19.2]
6
+ },
7
+ "errors": {
8
+ "Metric 1": [1.2, 0.8, 1.5, 1.1],
9
+ "Metric 2": [0.9, 1.1, 0.7, 1.3]
10
+ },
11
+ "significance": {
12
+ "0,1": "**",
13
+ "2,3": "NS"
14
+ }
15
+ }
@@ -0,0 +1,128 @@
1
+ {
2
+ "x": [
3
+ 92.25,
4
+ 52.07,
5
+ 87.9,
6
+ 60.94,
7
+ 106.17,
8
+ 93.52,
9
+ 26.69,
10
+ 97.63,
11
+ 52.85,
12
+ 37.96,
13
+ 76.95,
14
+ 61.01,
15
+ 56.33,
16
+ 21.77,
17
+ 102.22,
18
+ 37.14,
19
+ 24.13,
20
+ 67.97,
21
+ 30.3,
22
+ 87.78,
23
+ 60.87,
24
+ 43.87,
25
+ 31.65,
26
+ 112.2,
27
+ 96.59,
28
+ 27.32,
29
+ 112.21,
30
+ 100.12,
31
+ 40.1,
32
+ 107.61,
33
+ 84.21,
34
+ 51.36,
35
+ 61.6,
36
+ 85.33,
37
+ 25.26,
38
+ 41.33,
39
+ 72.81,
40
+ 38.59,
41
+ 102.61,
42
+ 41.36,
43
+ 28.11,
44
+ 109.03,
45
+ 37.69,
46
+ 98.02,
47
+ 78.55,
48
+ 68.99,
49
+ 64.31,
50
+ 100.46,
51
+ 107.38,
52
+ 75.49,
53
+ 100.84,
54
+ 117.13,
55
+ 101.2,
56
+ 79.24,
57
+ 33.96,
58
+ 44.54,
59
+ 54.81,
60
+ 26.09,
61
+ 65.68,
62
+ 41.88
63
+ ],
64
+ "y": [
65
+ 94.61,
66
+ 48.7,
67
+ 93.2,
68
+ 61.48,
69
+ 111.44,
70
+ 89.42,
71
+ 28.78,
72
+ 98.9,
73
+ 54.84,
74
+ 42.74,
75
+ 78.88,
76
+ 69.11,
77
+ 61.2,
78
+ 14.92,
79
+ 102.57,
80
+ 35.09,
81
+ 28.34,
82
+ 69.28,
83
+ 27.53,
84
+ 88.61,
85
+ 57.2,
86
+ 50.58,
87
+ 34.6,
88
+ 108.47,
89
+ 105.92,
90
+ 34.64,
91
+ 114.24,
92
+ 104.52,
93
+ 34.34,
94
+ 104.27,
95
+ 87.35,
96
+ 51.39,
97
+ 65.13,
98
+ 92.97,
99
+ 27.89,
100
+ 42.84,
101
+ 68.38,
102
+ 25.51,
103
+ 102.02,
104
+ 33.35,
105
+ 22.69,
106
+ 106.13,
107
+ 32.06,
108
+ 102.26,
109
+ 80.65,
110
+ 70.51,
111
+ 67.75,
112
+ 98.65,
113
+ 106.84,
114
+ 75.5,
115
+ 101.98,
116
+ 112.54,
117
+ 108.48,
118
+ 80.27,
119
+ 34.51,
120
+ 45.55,
121
+ 53.67,
122
+ 23.19,
123
+ 70.97,
124
+ 45.5
125
+ ],
126
+ "xlabel": "Mean of two analyzers (ug/m3)",
127
+ "ylabel": "Difference (Analyzer1 - Analyzer2)"
128
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "freq": [0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1.0, 2.0, 5.0, 10.0, 20.0, 50.0, 100.0],
3
+ "mag": [60, 55, 48, 40, 30, 20, 10, 0, -10, -20, -30, -40, -50],
4
+ "phase": [0, 0, -10, -30, -45, -60, -75, -85, -95, -105, -115, -125, -135],
5
+ "gain_db": true,
6
+ "phase_deg": true,
7
+ "freq_hz": true
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "labels": ["对照组", "处理A", "处理B"],
3
+ "series": {
4
+ "对照组": [10, 12, 11, 13, 10, 14, 9, 11],
5
+ "处理A": [8, 9, 10, 7, 11, 9, 8, 10],
6
+ "处理B": [13, 15, 14, 16, 13, 15, 14, 17]
7
+ }
8
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "x": [1, 2, 3, 4, 5, 6],
3
+ "y": [2, 3, 1, 4, 2, 5],
4
+ "sizes": [10, 40, 25, 80, 15, 60],
5
+ "groups": ["A", "B", "A", "B", "A", "B"],
6
+ "labels": ["s1", "s2", "s3", "s4", "s5", "s6"]
7
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "matrix": [
3
+ [10, 5, 3, 1],
4
+ [8, 12, 2, 0],
5
+ [1, 7, 15, 2],
6
+ [0, 3, 5, 8]
7
+ ],
8
+ "x": [0, 1, 2, 3],
9
+ "y": [0, 1, 2, 3]
10
+ }
@@ -0,0 +1,99 @@
1
+ {
2
+ "series": {
3
+ "PM2.5": [
4
+ -0.94,
5
+ 0.44,
6
+ -1.97,
7
+ 1.35,
8
+ 0.83,
9
+ 0.26,
10
+ -0.53,
11
+ 0.71,
12
+ -0.64,
13
+ -0.17,
14
+ 0.37,
15
+ 0.92,
16
+ 0.19,
17
+ 0.26,
18
+ -0.1,
19
+ -0.41,
20
+ -0.56,
21
+ 0.41,
22
+ 0.02,
23
+ -1.11
24
+ ],
25
+ "PM10": [
26
+ -0.45,
27
+ -0.15,
28
+ -1.74,
29
+ 1.7,
30
+ 0.74,
31
+ 0.16,
32
+ 0.87,
33
+ -0.2,
34
+ 1.09,
35
+ 1.42,
36
+ 1.31,
37
+ 0.77,
38
+ -0.38,
39
+ 0.44,
40
+ -0.11,
41
+ -0.44,
42
+ -0.43,
43
+ 0.53,
44
+ 0.55,
45
+ -1.24
46
+ ],
47
+ "SO2": [
48
+ -0.02,
49
+ -0.65,
50
+ 0.65,
51
+ -1.55,
52
+ -0.84,
53
+ 0.82,
54
+ -0.11,
55
+ -0.05,
56
+ -0.45,
57
+ 0.22,
58
+ -1.3,
59
+ -0.66,
60
+ 1.17,
61
+ -0.24,
62
+ 0.46,
63
+ 0.6,
64
+ 0.17,
65
+ -0.66,
66
+ 0.72,
67
+ 0.74
68
+ ],
69
+ "NO2": [
70
+ 1.53,
71
+ -0.72,
72
+ 0.06,
73
+ 0.47,
74
+ 0.37,
75
+ -1.23,
76
+ -0.66,
77
+ -0.2,
78
+ -0.85,
79
+ 0.68,
80
+ 0.59,
81
+ -1.96,
82
+ -1.81,
83
+ -1.28,
84
+ 0.12,
85
+ 2.03,
86
+ -0.38,
87
+ 0.25,
88
+ -1.06,
89
+ -1.05
90
+ ]
91
+ },
92
+ "labels": [
93
+ "PM2.5",
94
+ "PM10",
95
+ "SO2",
96
+ "NO2"
97
+ ],
98
+ "method": "pearson"
99
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "leaves": ["Gene A", "Gene B", "Gene C", "Gene D", "Gene E", "Gene F"],
3
+ "merges": [[0, 1, 1.2], [2, 3, 1.8], [4, 5, 2.5], [0, 2, 3.0], [0, 4, 3.5]],
4
+ "threshold": 3.0
5
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "series": {
3
+ "对照组": [1.2, 2.3, 2.1, 3.4, 2.8, 3.1, 2.9, 2.2, 2.6, 3.0, 2.4, 2.7],
4
+ "处理组": [3.1, 3.9, 4.2, 3.5, 4.4, 3.7, 4.0, 3.3, 4.1, 3.8, 3.6, 4.3],
5
+ "对照": [1.2, 2.3, 2.1, 3.4, 2.8, 3.1, 2.9, 2.2, 2.6, 3.0, 2.4, 2.7],
6
+ "处理": [3.1, 3.9, 4.2, 3.5, 4.4, 3.7, 4.0, 3.3, 4.1, 3.8, 3.6, 4.3]
7
+ }
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "x": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
3
+ "y": [2.1, 2.5, 2.3, 2.8, 3.0, 2.7, 3.2, 3.5, 3.1, 3.8, 1.5, 1.8, 1.6, 2.0, 2.2, 1.9, 2.4, 2.7, 2.3, 3.0],
4
+ "labels": ["P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8", "P9", "P10", "P11", "P12", "P13", "P14", "P15", "P16", "P17", "P18", "P19", "P20"],
5
+ "group": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
6
+ "size": [50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50],
7
+ "color_by": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
8
+ }