Julia Plots 啥都好,就是原生对于 Unicode 的支持还不完善(可见用 Julia 的国人似乎不多)。这篇文章简要汇总一下几个不同的 backend 对于中文的 workaround。

GR Backend

GR 在支持 Unicode 字符上进展感觉其实不积极。具体可以看这个 issue,修了一年还是没有比较好的成果(作者说是一个 extensive patch… 估计一开始在架构里写死了),只修到了支持 Latin-1 的地步,目前提供的临时解决方案是:

ENV["GKS_ENCODING"]="utf-8"
using Plots

在 Windows 上实测对于 png 格式的图片还是不行,但是对于 SVG 是可以的(但是因为计算布局的时候字符串长度算的是有问题的,所以 legend 的框会偏小)。

PyPlot Backend

PyPlot 背后调用的是 matplotlib,因此 PyPlot 默认对于中文的支持不利主要也来自于 matplotlib 对中文的支持问题。对于后者网上改 rcParams 的解决方案已经比较普及了。在 Julia 里面,我们只需要把 rcParams 暴露出来改就行了:

using Plots
pyplot()
rcParams = Plots.PyCall.PyDict(Plots.PyPlot.matplotlib."rcParams")
rcParams["font.sans-serif"] = ["Sarasa UI SC"]
rcParams["axes.unicode_minus"] = false

其中的 "Sarasa UI SC" 可以替换成电脑上安装的中文字体。这样中文标题就一点问题也没有了,但是似乎在 Juno 里面 PyPlot 画出来的图不会自动缩放,令强迫症稍微感到一丝不适。

PlotlyJS Backend

原生支持。

InspectDR Backend

原生支持。