Menu
CoddyTech

Matplotlib Cheat Sheet: Folha de Consulta

Última atualização

Figure e axes

A figure é a imagem inteira. Um axes é um gráfico dentro dela, e quase todas as chamadas abaixo são métodos de ax.

TarefaCódigo
Importar o pyplotimport matplotlib.pyplot as plt
Uma figure com um gráficofig, ax = plt.subplots()
Definir o tamanho em polegadasfig, ax = plt.subplots(figsize=(8, 4))
Desenhar no axesax.plot(x, y)
Mostrar a figureplt.show()
Salvar como PNG nítidofig.savefig("chart.png", dpi=150, bbox_inches="tight")
Salvar como gráfico vetorialfig.savefig("chart.svg"), fig.savefig("chart.pdf")
Fundo transparentefig.savefig("chart.png", transparent=True)
Fechar a figure para liberar memóriaplt.close(fig)
Estilo pyplot rápido para um gráficoplt.plot(x, y) plt.title("Quick look") plt.show()

Tipos de gráfico

TarefaCódigo
Gráfico de linhaax.plot(x, y)
Gráfico de dispersãoax.scatter(x, y, s=20, alpha=0.7)
Dispersão colorida por valor, com barra de corespoints = ax.scatter(x, y, c=y, cmap="viridis") fig.colorbar(points, ax=ax)
Gráfico de barrasax.bar(cats, a)
Barras horizontaisax.barh(cats, a)
Barras empilhadasax.bar(cats, a, label="2025") ax.bar(cats, b, bottom=a, label="2026")
Barras agrupadaspos = np.arange(len(cats)) ax.bar(pos - 0.2, a, width=0.4) ax.bar(pos + 0.2, b, width=0.4) ax.set_xticks(pos, labels=cats)
Histogramaax.hist(data, bins=30)
Boxplotax.boxplot([data, data * 2], tick_labels=["A", "B"])
Gráfico de violinoax.violinplot([data, data * 2])
Gráfico de pizzaax.pie([40, 35, 25], labels=cats, autopct="%1.0f%%")
Faixa entre duas curvasax.fill_between(x, y - 0.2, y + 0.2, alpha=0.3)
Barras de erroax.errorbar([1, 2, 3], [4, 5, 3], yerr=[0.5, 0.3, 0.6], fmt="o", capsize=4)
Gráfico em degrausax.step(x, y, where="mid")
Mapa de calor de um array 2Dimage = ax.imshow(np.random.default_rng(0).random((5, 5)), cmap="magma") fig.colorbar(image, ax=ax)
Gráfico de contorno preenchidoX, Y = np.meshgrid(x, x) ax.contourf(X, Y, np.sin(X) * np.cos(Y), levels=20)
Densidade de muitos pontosax.hexbin(data, data + np.random.default_rng(1).normal(size=200), gridsize=20)
Linha de referência horizontal ou verticalax.axhline(0, color="gray", linestyle="--"), ax.axvline(5)
Sombrear um intervaloax.axvspan(2, 4, alpha=0.2)

Linhas, marcadores e cores

TarefaCódigo
Cor, espessura e estilo da linhaax.plot(x, y, color="tab:red", linewidth=2, linestyle="--")
Marcadores nos pontosax.plot(x, y, marker="o", markersize=4)
String de formato curtaax.plot(x, y, "g--o")
Transparênciaax.plot(x, y, alpha=0.5)
Estilos de linha"-", "--", "-.", ":"
Códigos de marcador"o", "s", "^", "x", ".", "*"
Formas de nomear uma cor"tab:blue", "C1", "#1f77b4", (0.2, 0.4, 0.6)
n cores de um colormapcolors = plt.colormaps["viridis"](np.linspace(0, 1, 5))
Seu próprio ciclo de coresax.set_prop_cycle(color=["#0b7285", "#e8590c", "#5f3dc4"])
Barras com contorno e hachuraax.bar(cats, a, color="white", edgecolor="black", hatch="//")

Títulos, rótulos e legendas

TarefaCódigo
Título e rótulos dos eixosax.set_title("Sales"), ax.set_xlabel("Month"), ax.set_ylabel("EUR")
Tudo em uma chamadaax.set(title="Sales", xlabel="Month", ylabel="EUR")
Legenda a partir dos rótulos das linhasax.plot(x, y, label="sin") ax.legend()
Posição e colunas da legendaax.legend(loc="upper right", ncols=2, frameon=False)
Legenda fora do gráficoax.legend(loc="center left", bbox_to_anchor=(1, 0.5))
Texto numa posição dos dadosax.text(5, 0.5, "note")
Anotação com setaax.annotate("peak", xy=(1.57, 1), xytext=(3, 1.2), arrowprops=dict(arrowstyle="->"))
Valores nas barrasbars = ax.bar(cats, a) ax.bar_label(bars)
Título da figure inteirafig.suptitle("Q1 report")
Matemática nos rótulosax.set_xlabel(r"$\alpha$ (rad)")

Eixos, ticks e escalas

TarefaCódigo
Limites dos eixosax.set_xlim(0, 10), ax.set_ylim(bottom=0)
Escala logarítmicaax.set_yscale("log")
Escolher ticks e seus rótulosax.set_xticks([0, 5, 10], labels=["start", "middle", "end"])
Girar rótulos dos ticksax.tick_params(axis="x", labelrotation=45)
Linhas de gradeax.grid(True, alpha=0.3)
Eixo em porcentagemfrom matplotlib.ticker import PercentFormatter ax.yaxis.set_major_formatter(PercentFormatter(1.0))
Separador de milharax.yaxis.set_major_formatter("{x:,.0f}")
Ocultar as bordas de cima e da direitaax.spines[["top", "right"]].set_visible(False)
Segundo eixo y à direitaax2 = ax.twinx() ax2.plot(x, y * 100, color="tab:orange")
Mesma escala nos dois eixosax.set_aspect("equal")
Inverter um eixoax.invert_yaxis()
Ocultar os eixos por completoax.axis("off")
Rótulos de data legíveisfig.autofmt_xdate()

Subplots e layout

plt.subplots(rows, cols) devolve um array NumPy de axes. Indexe como um array.

TarefaCódigo
Grade de gráficosfig, axs = plt.subplots(2, 2, figsize=(8, 6))
Desenhar em um delesaxs[0, 1].plot(x, y)
Percorrer todosfor ax in axs.flat: ax.grid(True)
Compartilhar um eixo entre gráficosfig, axs = plt.subplots(1, 3, sharey=True)
Espaçamento sem sobreposiçãofig, axs = plt.subplots(2, 2, layout="constrained")
Corrigir sobreposições depois de desenharfig.tight_layout()
Colunas de larguras diferentesfig, axs = plt.subplots(1, 2, width_ratios=[3, 1])
Layout nomeado com painel largofig, axd = plt.subplot_mosaic([["top", "top"], ["left", "right"]]) axd["top"].plot(x, y)
Gráfico pequeno dentro de outroinset = ax.inset_axes([0.6, 0.6, 0.35, 0.35])
Ocultar um painel vazioaxs[0].axis("off")

Estilos e padrões

TarefaCódigo
Usar um estilo nativoplt.style.use("ggplot")
Listar os estilosplt.style.available
Visual do seaborn sem seabornplt.style.use("seaborn-v0_8-whitegrid")
Estilo só para uma figurewith plt.style.context("dark_background"): fig, ax = plt.subplots()
Tamanho de fonte padrãoplt.rcParams["font.size"] = 12
Tamanho e resolução padrão da figureplt.rcParams["figure.figsize"] = (8, 4), plt.rcParams["figure.dpi"] = 120
Voltar aos padrõesplt.style.use("default")
Colormaps comuns: sequencial, divergente, cinza"viridis", "coolwarm", "Greys"

Gráficos a partir do pandas

O pandas plota com Matplotlib. Passe ax= para desenhar no seu próprio axes, ou guarde o ax que o pandas devolve.

TarefaCódigo
Colunas do DataFrame no seu axesdf.plot(x="month", y="sales", ax=ax)
Barras de um resumo por grupodf.groupby("city")["sales"].sum().plot.bar(ax=ax)
Continuar estilizando o que o pandas desenhouax = df.plot(x="month", y="sales") ax.set_title("Sales")
Colunas direto no Matplotlibax.plot(df["month"], df["sales"])

Matplotlib 3.11: formas antigas e o que escrever agora

Código copiado de tutoriais antigos pode falhar ou gerar avisos no Matplotlib 3.11. Use as formas da coluna Matplotlib 3.11.

TarefaMatplotlib 3.11Forma antiga
Rótulos do boxplotax.boxplot([data, data * 2], tick_labels=["A", "B"])labels=["A", "B"]
Boxplot ou violino na horizontalax.boxplot(data, orientation="horizontal")vert=False
Obter um colormapplt.colormaps["viridis"]plt.cm.get_cmap("viridis")
Estilo seabornplt.style.use("seaborn-v0_8")plt.style.use("seaborn")

O código Matplotlib que você precisa para transformar dados em um gráfico claro, organizado por tarefa: figure e axes, tipos de gráfico, linhas e cores, títulos e legendas, eixos e ticks, subplots e layout, estilos e gráficos a partir do pandas. Cada linha traz um trecho curto para colar e uma frase sobre o que ele faz.

Tudo aqui usa o estilo orientado a objetos (fig, ax = plt.subplots() e depois métodos em ax) e foi escrito para o Matplotlib 3.11, a versão que a Coddy roda. Formas antigas como labels= em boxplot aparecem só na última tabela, ao lado do que escrever no lugar. Os exemplos usam x = np.linspace(0, 10, 50), y = np.sin(x) e uma amostra de valores normais chamada data. Está começando em Python? Comece pela folha de consulta Python e deixe as folhas de consulta de pandas, NumPy e scikit-learn abertas ao lado desta.

Perguntas frequentes sobre a folha de consulta Matplotlib

Esta folha de consulta de Matplotlib é grátis?
Sim. Esta folha de consulta de Matplotlib é totalmente grátis, sem cadastro. Salve nos favoritos ou imprima em PDF pelo navegador, e volte sempre que precisar da chamada exata para uma legenda, uma grade de subplots ou uma barra de cores.
Qual é a diferença entre plt e ax?
plt.plot() desenha no axes que estiver ativo no momento, o que é rápido para um único gráfico. fig, ax = plt.subplots() te dá a figure e o axes como objetos, então ax.plot() sempre desenha exatamente onde você quer. Use o estilo ax em tudo que tiver mais de um gráfico e no código que você vai manter.
Como mudo o tamanho da figure?
Passe figsize em polegadas ao criar a figure: fig, ax = plt.subplots(figsize=(10, 5)). Para mudar o padrão de todas as figures, defina plt.rcParams["figure.figsize"] = (10, 5). O tamanho em pixels de um arquivo salvo é figsize vezes dpi.
Como salvo um gráfico em alta resolução?
Chame fig.savefig("chart.png", dpi=300, bbox_inches="tight"). Um dpi maior gera um PNG mais nítido, e bbox_inches="tight" corta as margens vazias. Para impressão ou slides, salve em SVG ou PDF, que ficam nítidos em qualquer tamanho.
Por que os títulos e rótulos dos meus subplots se sobrepõem?
Crie a figure com layout="constrained", como em plt.subplots(2, 2, layout="constrained"), e o Matplotlib abre espaço para títulos, rótulos e barras de cores. Numa figure já existente, chame fig.tight_layout() depois de desenhar.
Qual versão do Matplotlib esta folha de consulta cobre?
O Matplotlib 3.11, a versão que a Coddy roda. Chamadas que versões mais novas removeram ou renomearam, como labels= em boxplot (agora tick_labels=) e plt.cm.get_cmap (agora plt.colormaps[...]), estão na última tabela, ao lado do que escrever no lugar.
Posso rodar código Matplotlib online?
Sim. O playground de Matplotlib grátis roda Python com Matplotlib, NumPy, pandas e scikit-learn no navegador e desenha suas figures ao lado da saída, então você pode colar qualquer trecho desta folha de consulta e ver o gráfico sem instalar nada. O curso de Machine Learning da Coddy usa esses gráficos para explorar os dados antes de treinar um modelo.
Ilustração das linguagens de programação do Coddy

Aprenda Matplotlib com a Coddy

COMEÇAR