通过调用 LaTeXStrings.jl
,Makie.jl
实现了对 LaTeX 的支持:
using LaTeXStrings
一个简单的基础用法例子如下所示 (图 18),其主要包含用于 x-y 标签和图例的 LaTeX 字符串。
function LaTeX_Strings()
x = 0:0.05:4π
lines(x, x -> sin(3x) / (cos(x) + 2) / x; label=L"\frac{\sin(3x)}{x(\cos(x)+2)}",
figure=(; resolution=(600, 400)), axis=(; xlabel=L"x"))
lines!(x, x -> cos(x) / x; label=L"\cos(x)/x")
lines!(x, x -> exp(-x); label=L"e^{-x}")
limits!(-0.5, 13, -0.6, 1.05)
axislegend(L"f(x)")
current_figure()
end
with_theme(LaTeX_Strings, publication_theme())
下面是更复杂的例子,图中的text
是一些等式,并且图例编号随着曲线数增加:
function multiple_lines()
x = collect(0:10)
fig = Figure(resolution=(600, 400), font="CMU Serif")
ax = Axis(fig[1, 1], xlabel=L"x", ylabel=L"f(x,a)")
for i = 0:10
lines!(ax, x, i .* x; label=latexstring("$(i) x"))
end
axislegend(L"f(x)"; position=:lt, nbanks=2, labelsize=14)
text!(L"f(x,a) = ax", position=(4, 80))
fig
end
multiple_lines()
但不太好的是,一些曲线的颜色是重复的。 添加标记和线条类型通常能解决此问题。 所以让我们使用 Cycles
来添加标记和线条类型。 设置 covary=true
,使所有元素一起循环:
function multiple_scatters_and_lines()
x = collect(0:10)
cycle = Cycle([:color, :linestyle, :marker], covary=true)
set_theme!(Lines=(cycle=cycle,), Scatter=(cycle=cycle,))
fig = Figure(resolution=(600, 400), font="CMU Serif")
ax = Axis(fig[1, 1], xlabel=L"x", ylabel=L"f(x,a)")
for i in x
lines!(ax, x, i .* x; label=latexstring("$(i) x"))
scatter!(ax, x, i .* x; markersize=13, strokewidth=0.25,
label=latexstring("$(i) x"))
end
axislegend(L"f(x)"; merge=true, position=:lt, nbanks=2, labelsize=14)
text!(L"f(x,a) = ax", position=(4, 80))
set_theme!() # reset to default theme
fig
end
multiple_scatters_and_lines()
一张出版质量的图如上所示。 那我们还能做些什么操作? 答案是还可以为图定义不同的默认颜色或者调色盘。 在下一节,我们将再次了解如何使用 Cycles
以及有关它的更多信息,即通过添加额外的关键字参数就可以实现前面的操作。