还可以使用 set_theme!(theme; kwargs...)
将当前主题改为 theme
, 并且通过 kwargs
覆盖或增加一些属性。使用不带参数的 set_theme!()
即可恢复到之前主题的设置。在下面的例子中,我们准备了具有不同样式的测试绘图函数,以便于观察每个主题的大多数属性。
6×6 Matrix{Float64}:
0.808288 0.386519 0.355371 0.0365011 -0.0911358 1.8115
-1.12207 -2.47766 -2.16183 -2.49928 -2.02981 -1.37017
-1.10464 -1.03518 -3.19756 -1.18944 -2.71633 -3.80455
-0.416993 -0.534315 -1.42439 -0.659362 -0.0592298 0.644529
0.287588 1.50687 2.36111 2.54137 0.48751 0.630836
0.229819 0.522733 0.864515 2.89343 2.06537 2.21375
本例随机生成了一个大小为 (20,20)
的矩阵,以便于绘制一张热力图(heatmap)。 同时本例也指定了 \(x\) 和 \(y\) 的范围。
using Random: seed!
seed!(13)
xv = yv = LinRange(-3, 0.5, 20)
matrix = randn(20, 20)
matrix[1:6, 1:6] # first 6 rows and columns
因此,新绘图函数如下所示:
function demo_themes(y, xv, yv, matrix)
fig, _ = series(y; labels=["$i" for i = 1:6], markersize=10,
color=:Set1, figure=(; resolution=(600, 300)),
axis=(; xlabel="time (s)", ylabel="Amplitude",
hmap = heatmap!(xv, yv, matrix; colormap=:plasma)
limits!(-3.1, 8.5, -6, 5.1)
axislegend("legend"; merge=true)
Colorbar(fig[1, 2], hmap)
fig
end
注意,series
函数的作用是同时绘制多条附带标签的直线图和散点图。另外还绘制了附带 colorbar 的 heatmap。如图所示,有两种暗色主题,一种是 theme_dark()
,另一种是 theme_black()
。
with_theme(theme_dark()) do
demo_themes(y, xv, yv, matrix)
end
with_theme(theme_black()) do
demo_themes(y, xv, yv, matrix)
end
Figure 11: Theme dark.
另外有三种白色主题,theme_ggplot2()
,theme_minimal()
和 theme_light()
。这些主题对于更标准的出版图很有用。
Figure 13: Theme ggplot2.
Figure 14: Theme minimal.
Figure 15: Theme light.
publication_theme() = Theme(
fontsize=16, font="CMU Serif",
Axis=(xlabelsize=20, xgridstyle=:dash, ygridstyle=:dash,
Legend=(framecolor=(:black, 0.5), bgcolor=(:white, 0.5)),
Colorbar=(ticksize=16, tickalign=1, spinewidth=0.5),
)
为简单起见,在接下来的例子中使用它绘制 scatterlines
和 heatmap
。
function plot_with_legend_and_colorbar()
fig, ax, _ = scatterlines(1:10; label="line")
hm = heatmap!(ax, LinRange(6, 9, 15), LinRange(2, 5, 15), randn(15, 15);
colormap=:Spectral_11)
axislegend("legend"; position=:lt)
Colorbar(fig[1, 2], hm, label="values")
ax.title = "my custom theme"
fig
end
然后使用前面定义的 Theme
,其输出如 (图 16) 所示。
Figure 16: Themed plot with Legend and Colorbar.
如果需要在 set_theme!(your_theme)
后更改一些设置,那么可以使用 update_theme!(resolution=(500, 400), fontsize=18)
。 另一种方法是给 with_theme
函数传递额外的参数:
fig = (resolution=(600, 400), figure_padding=1, backgroundcolor=:grey90)
ax = (; aspect=DataAspect(), xlabel=L"x", ylabel=L"y")
cbar = (; height=Relative(4 / 5))
with_theme(publication_theme(); fig..., Axis=ax, Colorbar=cbar) do
end
Figure 17: Theme with extra args.