太长不看之(不健全)源码:https://github.com/yihui/gglite 之(不健全)文档:https://pkg.yihui.org/gglite/
花在代码上的时间大约只有一个星期,不过从去年就开始在脑子里琢磨这事儿。说来惭愧,老朽直到今年才开始用 AI 撸代码。目前总体来说的体验是,审阅代码真累人啊;是的,祂确实可以一天丢无数个 PR 和成千上万行代码给你,但审阅起来会发现种种不满意,这些不满意只有升堂开审的时候才会一个个冒出来(这不怪 AI,是我无法预知我有多少要求),所以祂写再快,还是受制于我理解和审阅的速度。我用 Github Copilot 纯属偶然,主要是因为 Github 早早就送了我 Copilot Pro 套餐我一直没用(可能是看我维护着几个高星标的库、有意拉拢我当小白鼠)。用起来之后发现我还比较喜欢 PR 里的行内评论功能,我可以很方便地指出哪几行代码需要怎样的修改,跟审阅碳基生物的 PR 感觉一样。另一个我比较喜欢的是它跑在云端,我不用担心它穷折腾;随它怎么折腾,养虾养蛇养猫养狗都行,不会把我自己的电脑折腾坏了,我关机睡觉了它还可以继续工作(Github 设置了时限每个进程最多一小时,干不完活就杀掉)。缺点是相对比较慢,每次我提新需求或反馈,它要重启一个新的环境以及重新理解现有代码(虽然也有一定的历史记忆)再开始工作。但是呢,我觉得慢也有好处,可以让我慢慢想、捋顺我自己的思路。它要是太快了我可能反而还喘得像老牛跟不上。更实际的好处是,烧钱会烧得慢很多——Github 给我的配额是一个月 300 次请求,过去这几个月我撑死能用到 200;由于我慢如牛的思考和啰嗦的要求,Copilot 每次也要被我打回去想很久,通常就算它想一个小时,消耗的也只是一次请求(4 分钱)或最多两三次。
回到这个轻量级 ggplot,其实就是给蚂蚁的 JS 库 G2 做了个封装。G2 体积才一兆左右,算是很轻了,不过里面坑也不少,就不展开说了。玩玩初级图形当然是没问题了。
我个人不是很喜欢 Tidyverse 带火的 NSE 风格,也就是不带引号的变量名,所以这个包里要么是用简单粗暴的字符串变量名,要么用公式,长远看我个人有点倾向于用公式:https://pkg.yihui.org/gglite/doc/gglite.html#sec:formula-interface
这包玩着玩着我觉得应该有个快速出初级图形的办法,不需要用户自己配置图形标记,于是弄了个根据变量类型自动配置:https://pkg.yihui.org/gglite/doc/gglite.html#sec:automatic-marks
然后脑洞大开想到 ggplot2 人生(确切说是包生)中最大的遗憾是当年选了用 + 来构图而不是若干年后才出现的管道 |>。我想这事儿有何难?小孩子才做选择,成年人当然是都要!所以任你用加号还是管道,gglite 通吃:https://pkg.yihui.org/gglite/doc/gglite.html#sec:using-instead-of-gt 麻麻再也不用担心我记不住画图的时候该加还是该管了,你根本就没法写错!不用想,这辈子都写不错的!
你若问我亲手摁着 Copilot(实际上主要是在调用 Claude 的模型)写了这么个包,我自己会用吗?别开玩笑了,我才写了一个星期,我自己怎么可能就学会用了!我连里面有哪几个主要函数都还没记住(除了 g2(),它是我亲自起草的雏形),参数就更两眼一抹黑了。但是,嘿,你看 @Cloud2016 就已经用起来了:https://xiangyun.rbind.io/2026/04/double-axis/ 别人都养龙虾去了,他在这儿专心吃螃蟹。我就问有没有欣赏这个小伙子的雇主吧,他目前在找工作,快把他收走。
说了这么多,就是想听听大家的意见,尤其是 ggplot 重度用户们。我对 ggplot 其实也不是很熟(绝密,勿散布)。这个 gglite 里的函数名我还没最终决定,也非常欢迎大家对函数命名提点意见(比如是照抄 ggplot 还是新起一套动词,后者应该会更好,但相应地字典也要翻烂)。
另外现在有了 webR,测试任何包都不需要本地安装了,直接浏览器里玩起来:https://pkg.yihui.org/gglite/playground/
又及:啥时候能实现对 AI 只需要喊一句话“喂,我这里有个 g2.js,麻烦你借鉴所有 ggplot 的设计智慧,帮我给它做个 R 封装,用户体验要跟 ggplot 一样”,然后它就能哗哗哗埋头把这事儿给办了呢?感觉就算 Claude Opus 4.6 也还差得远。请问 Claude Mythos 你怎么看?