- 博客(65)
- 收藏
- 关注
原创 数据可视化库 Observable Plot 源码深度解析——15 用 d3 扩展 Plot(饼图、力导向图、矩形树图)
本章通过四个实例展示如何用 d3 扩展 Plot 无法内置的图形:饼图(路径 A)、力导向图与矩形树图(路径 C)。核心在于,因 Plot mark 是 D3 selection 与上下文的混合体,任何 d3 模块均可在 mark 内调用。饼图不依赖 scales,直接使用 d3.pie 与 d3.arc 生成路径;而力导向图与树图需复杂布局,故采用路径 C。Plot 的 width/height/title 与 d3 布局各司其职,互不干扰。Plot 不内置这些图是刻意为之,强调灵活性——只要合语法,即可
2026-09-23 13:51:18
44
原创 数据可视化库 Observable Plot 源码深度解析——14 自定义 Scale 与 Transform
本章揭示Plot中Scale体系的封闭性:仅支持10个预注册比例尺名称,无法新增类型,而Transform体系完全开放。尽管Scale底层基于d3-scale,Plot通过封装解决了域推断、坐标轴与图例联动等复杂问题。Plot.scale()并非注册新比例尺,而是配置现有类型。自定义变换可通过函数直接传入,实现安全扩展。设计合理在于:Scale影响绘图结构,其封闭性保障管线稳定性;而Transform仅作用于数据,开放更安全。
2026-09-22 16:39:56
301
原创 数据可视化库 Observable Plot 源码深度解析——13 自定义Mark扩展图表类型
本章详解自定义Mark的三条路径:render函数(10行内,仅装饰层,无数据通道)、render变换(20-50行,改写现有mark渲染,支持动态交互)和继承Mark类(60-150行,完整新图形类型)。核心机制在于markify将函数转为Render实例,使其具备生命周期但无通道;composeRender实现渲染组合,用于动画、交互等增强;而继承Mark可完全控制数据、通道与渲染逻辑。最小自定义需60行以上,但Plot已自动处理比例尺、分面、尺寸等通用逻辑。
2026-09-22 16:38:47
420
原创 数据可视化库 Observable Plot 源码深度解析——12 专题深挖:`group` 的完整旅程——从聚合到像素
本章深入解析 Plot 中 group 变换的完整机制。groupX({y: "count"}, {x: "sport", fill: "sex"}) 不仅分组数据,更将原始数据转为“数组的数组”,生成延迟求值的通道(如 y 为计数),并在 mark 构造前接管 fill/z 等属性。通过案例展示7行数据如何变为5个分组,经 barY 与 stackY 后形成堆叠柱状图。核心在于:group 是变换而非初始化,其输出直接作为 mark 的通道输入,实现从聚合到像素的无缝衔接。
2026-09-21 13:39:29
439
原创 数据可视化库 Observable Plot 源码深度解析——11 专题深挖:sort 的完整旅程——从声明到像素
本章深入剖析 Plot 中 sort 选项的双重语义:一是域排序(如 {fx: "y", reduce: "sum"}),用于重排分面顺序;二是变换排序(如 "-r"),影响绘制层级。通过 isDomainSort 判定机制,Plot 将两者分流至不同处理路径。案例中,sort 虽写在 dot 上,却因作用于 fx 域而改变整个分面的左右顺序。sort 必须以函数形式存在,因其需在尺度创建后执行,且涉及多阶段数据聚合与域推断。
2026-09-21 13:34:23
361
原创 可视化江湖门派图鉴:ECharts武当、D3逍遥、Vega全真、Tableau少林......
本文以金庸武侠世界观类比可视化技术生态,将主流工具分为“招式派”(如ECharts、PowerBI)与“内功派”(如D3、Vega、ggplot2),揭示其底层逻辑:前者开箱即用,后者可自创图表。通过十二大门派解析,助开发者理解各框架本质——从武当的华丽模板到逍遥派的无招胜有招,再到Three.js与P5.js的跨界创新,最终实现选型清醒、技术通透。
2026-09-16 17:20:54
617
原创 数据可视化技术复盘:从图形语法看 D3、Vega-Lite、ECharts、Observable Plot
本文基于图形语法《The Grammar of Graphics》复盘可视化技术选型,提出“图表 = Mark + Encoding + Transform + Coordinate”核心公式。对比D3、Vega-Lite、ECharts、Observable Plot等工具,揭示两大路线:原子组装派(Vega-Lite、Observable Plot)强调组件正交组合,适合自定义与拖拽编辑;模板优先派(ECharts、Highcharts)封装高频图表,易用但灵活性受限。实践表明,理解底层逻辑可避免返工,
2026-09-16 16:17:04
349
原创 数据可视化库 Observable Plot 源码深度解析——10 Plot 如何站在 D3 肩膀上
Plot 深度依赖 D3(52 个文件、243 个符号),但将核心创新聚焦于 D3 未覆盖的七项机制:比例尺编排、变换管线、分面状态、样式体系、依赖注入、警告系统与惰性模板。它借力 D3 的数学与算法原语(如 scale、array、shape),却以“约定优于配置”重构流程,实现自动推断、延迟渲染与可组合设计。相比 D3 的手动组装与立即求值,Plot 通过标记(mark)化架构让坐标轴等元素融入统一生命周期,支持分面锚点、共享样式与惰性计算,彰显其“在 D3 肩膀上构建更高层抽象”的设计哲学。
2026-09-15 12:33:41
156
原创 数据可视化库 Observable Plot 源码深度解析——9 分面、坐标轴与图例
本章解析 Plot 中分面、坐标轴与图例的统一实现机制。分面通过数据 domain 的笛卡尔积自动生成网格,无需用户指定尺寸;facetGroups 与 facetFilter 实现数据到格子的映射与过滤,支持空格子自动处理;重排逻辑确保显式 domain 变更后仍保持一致性。坐标轴锚点体系(如 top, bottom-left 等)智能选择绘制位置,避免冗余;图例则根据通道值类型(如 category)自动触发,实现“零配置”可视化协同。核心在于统一的 Mark 协议与横切状态管理。
2026-09-15 12:28:01
188
原创 数据可视化库 Observable Plot 源码深度解析——8 Mark 如何变成 SVG
本章解析 Plot 中 mark.render 的核心机制,揭示“数据→图形”的最后一跳。render 五参数中,index(索引数组)才是真正的“数据”载体,而非 channels。通过 context 实现依赖注入,提升可测试性;样式分层设计——组级(g 上)与直接(子元素上)样式由 applyIndirectStyles 与 applyDirectStyles 分别处理,实现高效渲染。Dot.render 展示了从准备、建容器、样式注入到数据绑定的完整流程,其中自动居中、负值过滤等细节体现 Plot
2026-09-15 12:19:26
254
原创 数据可视化库 Observable Plot 源码深度解析——7 数据变换(transform) pipeline
本章解析Plot数据变换流水线机制:transform是接收data与facets、返回新data和facets的纯函数,支持按分面独立执行;basic()将filter/sort等选项编译为可组合的变换函数,显式transform优先级最高,且变换通过composeTransform实现从内向外的嵌套执行顺序。理解此机制可“看穿”Plot配方的执行逻辑,掌握group/bin/stack/normalize等变换的语义边界与调用顺序。
2026-09-15 12:09:36
132
原创 数据可视化库 Observable Plot 源码深度解析——6 比例尺推断的魔法
本章揭秘Plot.js中比例尺的“智能推断”机制:并非真正理解用户意图,而是遵循8个类型判断、4类domain与5类range来源的规则。从createScales到createScaleFunctions,系统通过数据类型、显式配置与上下文环境,自动决定scale类型(如linear或band)、domain(值域)与range(视觉域),实现x: "weight"自动匹配数值轴、x: "name"转为分类轴等行为。关键在于顺序不可颠倒——先有数据才知domain,再有尺寸才定range。当数据混杂日期字
2026-09-14 13:45:59
270
原创 数据可视化库 Observable Plot 源码深度解析——5 plot() 主流程全景
本章详解 Plot.plot() 的 340 行核心流程,将其拆解为 21 步、5 个语义阶段:声明期整理、初始化与比例尺、环境与二阶通道、缩放与渲染、包装与输出。通过明确各阶段输入输出与顺序依赖(如 scale 必须先于 facet 建立),揭示 Plot 如何确保数据流正确性。重点解释为何 createScales 调用两次(第 9 步与第 15 步),以及 facetStateByMark、channelsByScale、stateByMark 的生成时机与用途,为后续章节提供精准定位锚点。
2026-09-14 13:37:57
867
原创 数据可视化库 Observable Plot 源码深度解析——4 核心抽象逐项学习
本章解析 Plot 语义内核的六大核心抽象,聚焦 Mark 与 Channel。Mark 基类通过模板方法模式统一渲染流程,实现数据归一化与语义外观分离;Channel 作为数据映射桥梁,支持函数、字段名、数组等五种值形式的自动解析与 scale 推断。二者共同构建“声明式”绘图范式:构造无副作用,组合灵活,职责清晰。虽存在职责过重、隐式转换等代价,但以简洁性与可扩展性支撑了丰富图表的统一表达。
2026-09-11 16:09:25
467
原创 数据可视化库Observable Plot 源码深度解析——3 整体架构与模块依赖
Plot基于D3构建,采用分层架构设计,共8个层级:入口导出、编排、核心抽象、比例尺、标记、数据变换、渲染支持与辅助工具。plot.js作为唯一编排入口,协调各层协作,依赖d3实现底层渲染。核心抽象层(mark/channel/scales/options)构成声明式DSL语义内核,通过模块化拆解实现高内聚低耦合。比例尺与标记分别提供5类比例尺及40+可视化标记,支持链式数据变换与丰富交互。整体结构清晰,层次分明,体现D3之上声明式语法层的工程化优势。
2026-09-11 15:49:09
223
原创 数据可视化库Observable Plot 源码深度解析——2 核心概念与抽象层次
本文澄清数据可视化库Observable Plot库的抽象层级:Plot为顶层容器,Mark为核心构造单元,Transforms负责数据预处理,Channels是Mark中数据驱动的options子集,Constants为全局一致属性,Scales自动将channel值映射为视觉值。设计受Grammar of Graphics影响,数据经变换、通道、缩放最终渲染为SVG。
2026-09-07 13:29:05
307
原创 数据可视化库Observable Plot 源码深度解析——1 认识 Observable Plot
深度解析Observable Plot源码系列文章之一,通过最小示例对比D3与Plot的代码差异,阐明Plot作为D3之上的声明式语法层,自动处理比例尺、坐标轴和边距。
2026-09-07 12:41:43
260
原创 数据可视化库Observalble Plot和图形语法理论
Observable Plot作为轻量级图形语法子集,将统计变换与几何标记耦合为统一mark API,部分实现九大构件(如Data、Aes、Scale等),牺牲了灵活性换取了简洁性,与ggplot2的完整解耦不同。需要根据自己的理解,不照搬太多。我在思考。</think>Observable Plot是轻量级图形语法子集,采用函数式mark API,将统计变换与几何标记耦合,部分实现九大构件,以简洁性换取灵活性。与完整解耦的ggplot2不同,它牺牲了自由组合能力,但内置交互并基于D3,适合快速探索性数据分
2026-09-02 12:42:10
339
原创 数据可视化库Observable Plot 全部选项样板(All Options Template)
Plot.plot() 全部选项的中文速查样板,基于官方类型定义整理。涵盖顶层选项、9 种 scale、边距、外观、分面、投影与各类 mark 的通用及特有配置,每条均标注类型、默认值与用途,附完整注释代码及结构图,便于快速查阅与复用。
2026-08-31 19:00:00
398
原创 Ubuntu history 命令实用教程(设置记录命令行数或永久记录等)
本文详细介绍了Linux中history命令的实用配置方法,包括查看历史记录配置、设置指定记录行数(5000-20000条)、配置永久无限保存历史记录等技巧。教程提供了多终端历史同步、时间戳显示、常见快捷用法(如!!、!编号执行命令)以及历史记录的删除与清空操作。文章还包含history --help参数的完整中文翻译,帮助用户理解各选项功能,并针对常见问题提供了解决方案。所有配置代码均为可复制格式,适合零基础用户跟随操作,提升终端使用效率。
2026-05-04 14:45:12
538
原创 Ubuntu+Windows双系统:解决GRUB不显示Windows启动项、一闪而过问题
本文针对Ubuntu+Windows双系统常见的GRUB菜单闪退和Windows启动项缺失问题,提供了详细解决方案。通过修改GRUB配置参数(设置菜单显示时间、启用系统探测功能)并更新引导,可有效解决开机菜单显示异常和Windows启动项识别问题。文章包含具体操作命令、常见报错分析、一键修复脚本,以及极端情况下的Live USB救援方案,适用于Ubuntu 20.04至24.04各版本。关键步骤包括调整GRUB_TIMEOUT设置、开启os-prober功能,并强调修改后必须执行update-grub命令使
2026-05-03 10:41:34
908
原创 Docker部署Loki+Grafana+Vector实现全服务器日志监控(含N8N/SSH/Fail2ban监控)
本文介绍了使用Docker Compose部署Loki+Grafana+Vector实现全服务器日志监控的方案。主要内容包括:通过Vector采集Docker容器日志、SSH登录日志和Fail2ban拦截日志,存储到Loki时序数据库,并通过Grafana可视化展示。文章提供了详细的docker-compose.yml和vector.toml配置文件,解决了日志权限、Loki限流等常见问题,实现一站式日志收集、存储和查询功能。该方案适合自建服务用户和运维新手,无需复杂命令即可快速搭建完整的日志监控系统,支持
2026-04-30 14:41:19
840
1
原创 解决Microsoft Edge/Hotmail登录报错(15/25/2603、0x80190001)
摘要: 针对Microsoft Edge/Hotmail登录报错(15/25/2603、0x80190001)问题,分析发现根源在于内网DNS劫持或系统网络协议异常。解决方案分三步: 强制设置公共DNS:通过netsh命令将DNS改为114.114.114.114或8.8.8.8,确保域名解析正常; 修复TLS配置:重置Internet选项,仅启用TLS 1.2/1.3,关闭旧版协议; 重置网络协议栈:执行netsh winsock reset等命令并重启。 实测后Edge和Hotmail登录恢复,最后可通
2026-04-16 16:58:55
2850
原创 windows/surface创建本地账户避坑指南:解决“密码不满足策略”“无此全局用户”报错
摘要: 本文针对Windows/Surface设备在重置后强制要求微软账户的问题,提供了创建无密码本地账户的解决方案。通过控制面板切换、net user命令、注册表修改和netplwiz免密登录等4种方法均无法绕过密码策略限制。最终成功方案是通过secpol策略导出-修改-导入,彻底关闭密码强制要求,实现无密码创建/切换本地账户并删除临时账户。具体步骤包括导出安全策略、修改最小密码长度和复杂度参数、导入策略并执行相关命令,完美解决办公电脑交接时的密码隐患问题。
2026-04-15 13:10:13
486
原创 FRP 0.62.0 + Mac Ollama 公网穿透部署+排障实录(标准 TOML 格式)
FRP 0.62+ 必须使用标准 TOML 配置Mac 上使用 Ollama 命令行必须退出 GUIOllama 默认只监听本地,必须指定0.0.0.0服务器防火墙 + 云安全组都要放行端口冲突、进程复活 99% 是 GUI 导致Mac Ollama + FRP 穿透,不退出 GUI,一切配置都白费!
2026-04-13 17:48:04
757
原创 Ubuntu Node.js 版本管理工具 n 完整安装与使用教程
n 是由 TJ Holowaychuk 开发的简单高效的 Node.js 版本管理器,采用 Bash 脚本编写,无需子shell 和复杂配置,核心功能是简化 Node.js 版本的安装、切换与卸载流程。核心优势:轻量无冗余:体积小、安装快,不占用过多系统资源;操作简洁:命令直观,无需记忆复杂语法,新手易上手;适配性强:支持 Ubuntu、CentOS 等 Linux 系统及 WSL(Windows 子系统),兼容主流 Node 版本;
2026-04-08 23:33:07
576
原创 CONDA设置、查看、管理源
本文介绍了Conda管理软件源的常用命令:1)查看当前配置源conda config --show channels;2)查看完整配置信息conda config --show-sources;3)添加清华源的四条命令及验证方法;4)恢复默认源的--remove-key命令。最后总结了查看源、查看配置和恢复默认源三个核心命令,帮助用户快速管理和切换Conda下载源。
2026-04-08 20:22:38
183
原创 Linux 下 Miniconda3 清华源极速安装教程(含报错解决、一键复制)
本文介绍了在Linux系统下使用清华镜像源快速安装Miniconda3的方法。主要内容包括:一键安装命令(含清理旧包、下载安装、激活环境等完整步骤)、常见报错解决方案(如安装包损坏、conda命令找不到等)、conda基础使用命令以及安装注意事项。通过清华源可以解决国内用户下载慢的问题,提供完整安装指南和错误处理方法,确保新手也能顺利完成Miniconda3的安装配置。文章还强调了使用普通用户权限安装、保持默认路径等最佳实践,是Linux环境下安装Python环境的实用教程。
2026-04-08 20:16:44
1036
原创 XFCE+XRDP闪退
摘要:在Ubuntu 24安装fcitx5输入法后出现冲突导致系统闪退,检查发现xrdp.ini配置错误。Xorg会话端口不应设为3389(RDP默认端口),需改为port=-1,否则会导致登录后黑屏闪退。建议同时调整加密级别为medium,并重启xrdp相关服务。文中提供了完整的xrdp.ini配置模板,包含端口设置、加密协议、SSL配置等关键参数,特别强调了Xorg/VNC会话端口的正确配置方法及常见错误表现。
2026-04-03 16:52:43
88
原创 livp文件使用python转换为heic或jpeg格式
livp是苹果手机的实况照片格式,livp即(Live Photos)。文件包含一张静态图片,以及一段1.5秒的短视频。但该格式并不通用,在WINDOWS电脑上不能直接查看,给后续的处理带来不便,经常需要转换为JPG/JPEG格式。
2025-05-06 14:57:06
2331
原创 Python获取Windows服务列表
Windows 服务是 Windows 操作系统的核心,但导出列表有点困难,借助python的psutil模块,可以快速导出windows服务列表。
2025-02-13 13:36:15
564
原创 WPS WORD 宏导出高亮文本
WPS手机版可以直接导出高亮文本,但只能导出手机编辑的部分,如果同时在电脑上编辑过,电脑上高亮的无法导出,因为作者不一样。WPS电脑版没有这个功能,只能通过宏编程实现。
2024-02-01 10:24:11
2105
原创 QUANTAXIS探索(八)量化策略实现类QAStrategy的模拟模式
接入交易行情数据后,也可以使用模拟模式。在该模式下,策略等待行情推送,收到行情推送后,更新交易数据,推动策略循环。流程路线:run_sim -> _debug_sim -> subscribe_data -> callback -> upcoming_data -> on_bar。通过订阅行情数据,并在回调函数中更新数据、状态,推动事件循环。
2023-06-08 13:13:53
634
原创 QUANTAXIS探索(七)量化策略实现类QAStrategy的回测模式
QAStrategy 包实现了常用的策略流程的封装,包括股票和期货的。支持回测、模拟/仿真、实盘,支持股票、期货。
2023-06-07 13:52:11
1179
转载 QUANTAXIS探索(六)转一篇使用指南
使用指南背景:1. 在现实场景中, 我们需要解决哪些问题?2. QUANTAXIS是什么, 他能怎么样帮助我快速高效的解决问题3. 我应该从哪里获得支持以及 当我想把项目经验/心得/代码回馈给社区应该如何去做
2023-06-05 15:51:55
1546
1
原创 QUANTAXIS探索(五)QUANTAXIS的ACCOUNT
QIFI Account是一个基于 DIFF/ QIFI/ QAAccount后的一个实盘适用的Account基类。QA_AccountPRO,功能相对于QA_Account更专一,专门处理账户相关的操作。QA_Account 是QUANTAXIS的最小不可分割单元之一。
2023-04-27 16:58:02
735
2
原创 QUANTAXIS探索(四)回测结果和绩效分析
QUANTAXIS策略运行的回测结果和绩效分析是在 QUANTAXIS.QAARP 的QA_Risk和QA_Performance
2023-04-26 16:15:39
576
原创 QUANTAXIS探索(二)策略运行
股票类的回测只需要继承QAStrategyStockBase并根据回测周期需要,重写on_bar/on_tick/on_1min_bar/on_5min_bar…
2023-04-26 10:49:03
285
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅