假设我们有一个复合类型:
mutable struct MyType{TF<:AbstractFloat, TI<:Integer}
a::TF
b::TF
end
Run Code Online (Sandbox Code Playgroud)
我们定义一个构造函数
function MyType(a; b = 1.0)
return MyType(a, b)
end
Run Code Online (Sandbox Code Playgroud)
我可以MyType
通过a
's的数组进行广播,但是如何为b
's进行广播?
我试着做
MyType.([1.0, 2.0, 3.0]; [:b, 1.0, :b, 2.0, :b, 3.0,])
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用。
请注意,上面的示例完全是人为的。实际上,我有一个包含许多字段的复合类型,其中许多字段是使用关键字参数构造的,我只想将其中的一些更改为存储在数组中的不同值。
我在 macOS 10.13 上使用来自 Julia 语言的 PyPlot 包。这是我产生问题的代码:
using PyPlot
PyPlot.svg(true)
function myplot()
my_font=matplotlib[:font_manager][:FontProperties](fname = "/System/Library/Fonts/Helvetica.ttc")
fig, ax = subplots()
ax[:plot](rand(10), rand(10), linewidth = 2)
for tick in ax[:xaxis][:get_major_ticks]()
tick[:label][:set_fontproperties](my_font)
end
for tick in ax[:yaxis][:get_major_ticks]()
tick[:label][:set_fontproperties](my_font)
end
savefig("figure.pdf")
end
myplot()
Run Code Online (Sandbox Code Playgroud)
如您所见,我需要将刻度标签的字体更改为 Helvetica,这可以通过 ttc 文件在我的 Mac 上使用。该图在 Jupyter Notebook 中正常显示。但是,使用savefig()
,它不起作用:
RuntimeError('TrueType font is missing table',)
Run Code Online (Sandbox Code Playgroud)
我已经删除了~/.matplotlib/fontList.py3k.cache
和~/.matplotlib/tex.cache
。我还需要做什么才能savefig()
工作?谢谢!