求问动态交互可视化(用plot充当gui)的julia技术路线?

对于plot图来说,交互有如下级别:

  1. 纯静态图,一次生成不可再动,通常质量高,用于打印出版
  2. 支持动图gif、动画、视频生成,动态不可改
  3. 支持平移、放缩、选择数据点、重置坐标轴等图上操作
  4. 支持图上操作后原地更新绘图
  5. 支持外部小部件widget更新绘图,包括滑块、下拉菜单、按钮、文本框等
  6. 支持鼠标键盘事件更新绘图,达到用plot充当gui的境界
  7. 网页原生web native,天生跨平台(amd/arm/remote),百尺竿头更进一步

为什么用plot充当gui?

  • gui有gui的逻辑,根据数据绘出各种各样的图,感觉也不对味
  • gui的库,如gtk、qt,需要另外学习,不如plot便捷

plot能充当gui吗?

  • 取决于交互能力,如果达到前述第5级别,问题不大

有哪些技术路线?

  • PlotlyJS-Dash框架,他们官方抛弃了所有只保留Python,但julia社区还在用,Pluto.jl首席作者两个月前也在撮合,只可惜存在WebIO等致命问题,只能work around、trick、或在线使用
  • Genie框架,跟PlotlyJS-Dash差不多,这类框架还是太简陋了,跟jupyter比,明显相形见绌
  • Pluto.jl笔记本, 只能用小部件更新绘图,图上操作有限,而且只能自上向下整体运行,不存在局部循环更新绘图
  • jupyterlab实验室,python十年前就有杀手锏matplotlib,也有专门集成jupyter的ipympl,似乎除了慢问题不大,julia就很受限
  • Makie可视化,应该是最优解,但存在线程安全和jupyter集成的问题,他们正在用JavaScript重写
  • UnicodePlots.jl包,仅限终端内部,不存在图上交互

这些技术路线似乎都有各自的问题,难道只能按照人们常说的“julia只是橱柜语言,使用场景狭窄,用python吧”了么?
喜欢用julia,除了“写的少,跑得快”,它还是从人类角度来编织的,用得顺,其他语言,就比如说,python和他的包管理器竟然是分开的,新手上来就遭遇pip跟python版本不相配的问题,代码层次和缩进绑定,定义函数看到def开始却不知道函数在哪里结尾,再比如java写个“你好,世界!”,竟然写那么长,多少有点儿反人类亲机器。

Clemapfel/Mousetrap.jl: Finally, a GUI Engine made for Julia (github.com) 这种路线不知道如何

这是gtk呀,是gui不是plot了,而且如果说要用gtk/qt,那就改用C++了,就不是python/julia/R/matlab的范畴了