Existem várias maneiras de modificar a aparência geral de seus plots. Você pode usar um tema predefinido ou seu próprio tema personalizado. Por exemplo, use um tema escuro predefinido via with_theme(your_plot_function, theme_dark())
. Ou construa o seu próprio com Theme(kwargs)
ou até mesmo atualize o que está ativo com update_theme!(kwargs)
.
Você também pode fazer set_theme!(theme; kwargs...)
para alterar o tema do padrão atual para theme
e substituir ou adicionar atributos fornecidos por kwargs
. Se você fizer isso e quiser redefinir todas as configurações anteriores, faça set_theme!()
sem argumentos. Veja os exemplos a seguir, onde preparamos uma função de plotagem de teste com características diferentes, de forma que a maioria dos atributos para cada tema possa ser apreciada.
using Random: seed!
seed!(123)
y = cumsum(randn(6, 6), dims=2)
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
Uma matrix de tamanho (20, 20)
com entradas aleatórias, para que possamos plotar um mapa de calor. O intervalo em \(x\) e \(y\) também é especificado.
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
6×6 Matrix{Float64}:
-0.271257 0.894952 0.728865 -0.293849 -0.449277 -0.0948871
-0.193033 -0.421286 -0.455905 -0.0576092 -0.756621 -1.47419
-0.123177 0.762254 0.773921 -0.38526 -0.0659695 -0.599284
-1.47327 0.770122 1.20725 0.257913 0.111979 0.875439
-1.82913 -0.603888 0.164083 -0.118504 1.46723 0.0948876
1.09769 0.178207 0.110243 -0.543203 0.592245 0.328993
Portanto, nossa função de plotagem se parece com o seguinte:
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",
title="Measurements"))
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
Observe que a função series
foi usada para plotar várias linhas e dispersões de uma só vez com seus rótulos correspondentes. Além disso, um mapa de calor com sua barra de cores foi incluído. Atualmente, existem dois temas escuros, um chamado theme_dark()
e outro 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
E mais três temas claros chamados, theme_ggplot2()
, theme_minimal()
e theme_light()
. Útil para plots de tipo de publicação mais padrão.
with_theme(theme_ggplot2()) do
demo_themes(y, xv, yv, matrix)
end
with_theme(theme_minimal()) do
demo_themes(y, xv, yv, matrix)
end
with_theme(theme_light()) do
demo_themes(y, xv, yv, matrix)
end
Outra alternativa é definir um Theme
fazendo with_theme(your_plot, your_theme())
. Por exemplo, o tema a seguir pode ser uma versão simples para um modelo de qualidade de publicação:
publication_theme() = Theme(
fontsize=16, font="CMU Serif",
Axis=(xlabelsize=20, xgridstyle=:dash, ygridstyle=:dash,
xtickalign=1, ytickalign=1, yticksize=10, xticksize=10,
xlabelpadding=-5, xlabel="x", ylabel="y"),
Legend=(framecolor=(:black, 0.5), bgcolor=(:white, 0.5)),
Colorbar=(ticksize=16, tickalign=1, spinewidth=0.5),
)
Que, por simplicidade, usamos para plotar scatterlines
e um 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
Então, usando o Theme
definido anteriormente, a saída é mostrada na Figura (Figure 16).
with_theme(plot_with_legend_and_colorbar, publication_theme())
Agora, se algo precisar ser alterado após set_theme!(your_theme)
, podemos fazer isso com update_theme!(resolution=(500, 400), fontsize=18)
, por exemplo. Outra abordagem será passar argumentos adicionais para a função 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
plot_with_legend_and_colorbar()
end
Agora, vamos seguir em frente e fazer um plot com strings em LaTeX e um tema personalizado.