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()
= Plots.PyCall.PyDict(Plots.PyPlot.matplotlib."rcParams")
rcParams "font.sans-serif"] = ["Sarasa UI SC"]
rcParams["axes.unicode_minus"] = false rcParams[
其中的 "Sarasa UI SC"
可以替换成电脑上安装的中文字体。这样中文标题就一点问题也没有了,但是似乎在 Juno 里面 PyPlot 画出来的图不会自动缩放,令强迫症稍微感到一丝不适。
PlotlyJS Backend
原生支持。
InspectDR Backend
原生支持。