Matplotlib avançado

Layouts complexos com subplot_mosaic

Monte figuras com gráficos de tamanhos diferentes usando plt.subplot_mosaic e proporções de largura e altura.

Introdução

plt.subplots cria uma grade regular, mas figuras reais muitas vezes precisam de um gráfico principal grande com outros menores em volta. plt.subplot_mosaic deixa você desenhar o layout como uma lista de linhas, dando um nome a cada gráfico.

Cada lista interna é uma linha e cada nome um gráfico; um nome repetido em várias células forma um gráfico maior e "." deixa uma célula vazia. axes é um dicionário, então axes["main"] é o gráfico de dispersão. gridspec_kw define os tamanhos relativos: a coluna principal é quatro vezes mais larga que a da direita. Os histogramas nas bordas mostram como x e y se distribuem.

Visualizador interativo

Escolha um layout e ligue ou desligue as proporções. Cada nome do mosaico vira um gráfico.

Exemplo de Matplotlib executável

Matplotlib
Executar código →
main.py
import matplotlib.pyplot as plt
import numpy as np

rng = np.random.default_rng(4)
x = rng.normal(size=300)
y = 0.6 * x + rng.normal(scale=0.8, size=300)

fig, axes = plt.subplot_mosaic([["top", "."], ["main", "right"]], figsize=(6, 6),
                               gridspec_kw={"width_ratios": [4, 1], "height_ratios": [1, 4]})
axes["main"].scatter(x, y, s=10, alpha=0.6)
axes["top"].hist(x, bins=30)
axes["right"].hist(y, bins=30, orientation="horizontal")
axes["top"].axis("off")
axes["right"].axis("off")
fig.suptitle("Scatter plot with marginal histograms")
plt.show()
Gerar um botão Run para este exemplo O gráfico que este código desenha
Layouts complexos com subplot_mosaic