5.4 使用 LaTeXStrings.jl

通过调用 LaTeXStrings.jlMakie.jl 实现了对 LaTeX 的支持:

  1. using LaTeXStrings

一个简单的基础用法例子如下所示 (图 18),其主要包含用于 x-y 标签和图例的 LaTeX 字符串。

  1. function LaTeX_Strings()
  2. x = 0:0.05:4π
  3. lines(x, x -> sin(3x) / (cos(x) + 2) / x; label=L"\frac{\sin(3x)}{x(\cos(x)+2)}",
  4. figure=(; resolution=(600, 400)), axis=(; xlabel=L"x"))
  5. lines!(x, x -> cos(x) / x; label=L"\cos(x)/x")
  6. lines!(x, x -> exp(-x); label=L"e^{-x}")
  7. limits!(-0.5, 13, -0.6, 1.05)
  8. axislegend(L"f(x)")
  9. current_figure()
  10. end
  1. with_theme(LaTeX_Strings, publication_theme())

Figure 18: Plot with LaTeX strings.

Figure 18: Plot with LaTeX strings.

下面是更复杂的例子,图中的text是一些等式,并且图例编号随着曲线数增加:

  1. function multiple_lines()
  2. x = collect(0:10)
  3. fig = Figure(resolution=(600, 400), font="CMU Serif")
  4. ax = Axis(fig[1, 1], xlabel=L"x", ylabel=L"f(x,a)")
  5. for i = 0:10
  6. lines!(ax, x, i .* x; label=latexstring("$(i) x"))
  7. end
  8. axislegend(L"f(x)"; position=:lt, nbanks=2, labelsize=14)
  9. text!(L"f(x,a) = ax", position=(4, 80))
  10. fig
  11. end
  12. multiple_lines()

Figure 19: Multiple lines.

Figure 19: Multiple lines.

但不太好的是,一些曲线的颜色是重复的。 添加标记和线条类型通常能解决此问题。 所以让我们使用 Cycles 来添加标记和线条类型。 设置 covary=true,使所有元素一起循环:

  1. function multiple_scatters_and_lines()
  2. x = collect(0:10)
  3. cycle = Cycle([:color, :linestyle, :marker], covary=true)
  4. set_theme!(Lines=(cycle=cycle,), Scatter=(cycle=cycle,))
  5. fig = Figure(resolution=(600, 400), font="CMU Serif")
  6. ax = Axis(fig[1, 1], xlabel=L"x", ylabel=L"f(x,a)")
  7. for i in x
  8. lines!(ax, x, i .* x; label=latexstring("$(i) x"))
  9. scatter!(ax, x, i .* x; markersize=13, strokewidth=0.25,
  10. label=latexstring("$(i) x"))
  11. end
  12. axislegend(L"f(x)"; merge=true, position=:lt, nbanks=2, labelsize=14)
  13. text!(L"f(x,a) = ax", position=(4, 80))
  14. set_theme!() # reset to default theme
  15. fig
  16. end
  17. multiple_scatters_and_lines()

Figure 20: Multiple Scatters and Lines.

Figure 20: Multiple Scatters and Lines.

一张出版质量的图如上所示。 那我们还能做些什么操作? 答案是还可以为图定义不同的默认颜色或者调色盘。 在下一节,我们将再次了解如何使用 Cycles 以及有关它的更多信息,即通过添加额外的关键字参数就可以实现前面的操作。

CC BY-NC-SA 4.0 Jose Storopoli, Rik Huijzer, Lazaro Alonso, 刘贵欣 (中文翻译), 田俊 (中文审校)