一个面向研究与内容创作的纯静态仪表盘:
支持中国房价双源对比 + 多资产统一时间轴观察,兼顾可读性、导出质量与长期维护。
- 在线主页:房价主面板
- 在线多资产页:multi-assets.html
- English doc: README.en.md
- 双房价数据源:中原 6 城 + 统计局 70 城
- 多资产统一观察:中国房产、美国房产、贵金属、主要股指与美股科技七巨头
- 分析能力完整:区间重定基、回撤分析、跨源比较、图内表格
- 生产可用导出:标准 / 超清 PNG,导图时自动隐藏干扰控件
- 长期维护友好:GitHub Actions 定时更新数据,静态部署即用
| 模块 | 能力 | 入口 |
|---|---|---|
| 中国房价主面板 | 双数据源切换、跨源对比、回撤分析 | index.html |
| 多资产面板 | 统一时间轴、不同资产同屏对比 | multi-assets.html |
| 图表交互 | 最多 7 条序列、时间滑块联动、主题切换 | 页面内控件 |
| 导出能力 | 标准 / 超清 PNG 导出 | 图表工具栏 |
git clone https://github.com/coattail/Multi-Asset-Comparison.git
cd Multi-Asset-Comparison
python3 -m http.server 9013浏览器访问:http://127.0.0.1:9013
请使用
http://访问,避免file://带来的资源加载限制。
node scripts/extract-house-price-data.mjs <excel-file.xlsx>node scripts/fetch-nbs-70city-secondhand.mjsnode scripts/build-multi-asset-data.mjsnode scripts/build-font-subset.mjs- 统计局月更:
.github/workflows/auto-update-nbs-data.yml(每月 6 日和 15 日各运行一次) - 多资产日更:
.github/workflows/auto-update-multi-asset-data.yml
两条流水线都会:
- 拉取/构建最新数据
- 自动重建
STKaiti子集字体 - 若文件变更则自动提交回仓库
当 GitHub Actions 暂时不可用时,可改用本地 launchd(macOS)每天自动跑一次数据更新。
默认行为:
- 每天本地时间
07:40执行 - 顺序执行:
node scripts/build-multi-asset-data.mjsnode scripts/fetch-nbs-70city-secondhand.mjs
- 自动写入日志到
.local-auto-update/ - 仅更新本地文件,不会自动
git push
chmod +x scripts/local-daily-update.sh scripts/install-local-daily-update-macos.sh scripts/uninstall-local-daily-update-macos.sh
./scripts/install-local-daily-update-macos.sh若想改执行时间(示例:每天 06:20):
UPDATE_HOUR=6 UPDATE_MINUTE=20 ./scripts/install-local-daily-update-macos.shlaunchctl kickstart -k gui/$(id -u)/com.multiassetdashboard.dailyupdatelaunchctl print gui/$(id -u)/com.multiassetdashboard.dailyupdate
tail -f .local-auto-update/launchd.stdout.log
tail -f .local-auto-update/logs/update-$(date +%Y%m%d).log./scripts/uninstall-local-daily-update-macos.sh- 原始字库:
fonts/STKaiti-full.woff2 - 线上子集:
fonts/STKaiti-subset.woff2 - 字符池:
fonts/STKaiti-subset-chars.txt(随数据更新自动扩容)
默认优先加载:
./vendor/echarts.min.js
失败后自动回退:
https://cdn.jsdelivr.net/npm/echarts@5.5.1/dist/echarts.min.jshttps://cdn.bootcdn.net/ajax/libs/echarts/5.5.0/echarts.min.jshttps://cdn.staticfile.org/echarts/5.5.0/echarts.min.js
SKIP_FONT_SUBSET=1:跳过自动子集构建FONT_SUBSET_RESET=1:从零重建字符池(不继承历史)
NBS_OUTPUT_MIN_MONTH=YYYY-MMNBS_OUTPUT_BASE_MONTH=YYYY-MMNBS_OUTPUT_MAX_MONTH=YYYY-MMNBS_SCAN_START_YEAR=YYYY
MULTI_ASSET_START_MONTH=YYYY-MM
Multi-Asset-Dashboard/
├── index.html
├── multi-assets.html
├── style.css
├── app.js
├── multi-assets.js
├── house-price-data.js
├── house-price-data-nbs-70.js
├── multi-asset-data.js
├── fonts/
├── vendor/
├── scripts/
└── .github/workflows/
- 确认通过
http://访问而非file:// - 确认
house-price-data*.js/multi-asset-data.js存在且内容完整 - 确认 GitHub Pages 已同时发布
vendor/echarts.min.js与fonts/STKaiti-subset.woff2 - 若外网受限,优先保证本地
vendor/echarts.min.js可访问
- 重跑对应数据脚本(会自动触发字体子集扩容)
- 或手动运行:
node scripts/build-font-subset.mjs
- 先点击“一键生成”
- 导出结果遵循当前主题、区间、勾选项与分析开关
- 建议/问题:欢迎提交 Issues
- 代码改进:欢迎发起 PR
- 数据使用需遵循来源平台条款与当地法规。
- 本项目用于研究与交流,不构成投资建议。