Visualização com Matplotlib e Seaborn

Transforme tabelas do pandas em gráficos claros com Python. Construa figuras e áreas de plotagem no Matplotlib, crie gráficos de linhas, dispersão e barras e gere gráficos diretamente do pandas após agregar e remodelar os dados. Use seaborn para gráficos estatísticos, histogramas, diagramas de caixa e mapas de calor, compare grupos com pequenos múltiplos e facetas e finalize cada figura com rótulos e anotações antes de exportá-la para um relatório ou para a web.

IntermediárioAula 7 de 8 do curso Curso de Análise de dados com Python

O que você vai aprender

  1. Criar uma figura e suas áreas de plotagem com a interface orientada a objetos do Matplotlib, desenhar nelas gráficos de linhas, dispersão e barras e controlar títulos, rótulos, marcas de graduação, limites, legendas e estilos.
    • Configurar uma figura e suas áreas de plotagem
      Entender como um gráfico do Matplotlib é construído com uma figura, uma ou mais áreas de plotagem e os elementos desenhados nelas, e escolher entre as formas pyplot e orientada a objetos de escrever código de plotagem.
    • Criar gráficos de linhas e de dispersão
      Desenhar valores ao longo de um eixo ordenado com ax.plot e observações individuais com ax.scatter, controlando cor, estilo de linha, marcadores, tamanho dos marcadores e transparência.
    • Comparar categorias com gráficos de barras
      Desenhar gráficos de barras verticais, horizontais, agrupadas e empilhadas com ax.bar e ax.barh e identificar as barras com seus valores.
    • Adicionar rótulos, definir escalas e estilizar um gráfico
      Definir títulos, rótulos de eixos, limites, marcas de graduação e seus formatos, escalas, legendas e grades, e mudar a aparência geral dos gráficos com folhas de estilo e configurações.
  2. Criar gráficos diretamente de Series e DataFrames com o método plot do pandas e primeiro agregar, ordenar e remodelar tabelas para que cada gráfico mostre os valores pretendidos.
    • Usar o método plot do pandas
      Criar gráficos de linhas, barras, histograma, caixa, área, setores e dispersão a partir de uma Series ou DataFrame e personalizar as áreas de plotagem do Matplotlib retornadas.
    • Remodelar os dados antes de criar gráficos
      Agregar, contar, ordenar e remodelar uma tabela para os formatos largo e longo, de modo que ela contenha exatamente os valores que um gráfico deve mostrar, no formato esperado pelo pandas ou seaborn.
  3. Usar seaborn para mapear colunas de DataFrames a posições, cores e estilos, mostrar relações entre variáveis numéricas com resumos de tendências e comparar grupos com gráficos categóricos.
    • Mapear colunas para características visuais dos gráficos no seaborn
      Indicar colunas do DataFrame para posição, cor, estilo e tamanho, distinguir funções no nível da área de plotagem das funções no nível da figura e definir temas e paletas do seaborn.
    • Mostrar relações entre variáveis numéricas
      Desenhar gráficos de dispersão, gráficos de linhas agregadas com faixas de incerteza, retas de regressão e matrizes de gráficos de pares com seaborn e interpretar o que as faixas e linhas mostram e o que não mostram.
    • Comparar grupos com gráficos categóricos
      Comparar uma variável numérica entre categorias com gráficos de barras, contagem, pontos, pontos por categoria e enxame, e escolher seu estimador, barras de erro, ordem e orientação.
  4. Mostrar como uma variável numérica se distribui com histogramas, curvas de densidade, diagramas de caixa e gráficos de violino, e exibir uma tabela de valores ou correlações como mapa de calor.
    • Mostrar uma distribuição com histogramas e curvas de densidade
      Construir histogramas no Matplotlib, pandas e seaborn, escolher intervalos de classe e escalas e adicionar ou comparar curvas de densidade suavizadas.
    • Resumir e comparar distribuições com diagramas de caixa
      Interpretar e desenhar diagramas de caixa a partir dos quartis e da regra de 1,5 × IQR, comparar grupos com eles e usar gráficos de violino e de pontos por categoria para mostrar o que a caixa esconde.
    • Exibir uma grade de valores como mapa de calor
      Transformar uma tabela dinâmica ou matriz de correlação em um mapa de calor com seaborn ou Matplotlib e controlar anotações, formatos numéricos, escalas e limites de cores.
  5. Organizar pequenos múltiplos com subgráficos do Matplotlib e facetas do seaborn, destacar o que importa com textos, setas e linhas de referência e salvar figuras no formato e tamanho adequados para relatórios e para a web.
    • Organizar vários gráficos em uma figura
      Criar grades de áreas de plotagem com plt.subplots, compartilhar escalas entre painéis, preencher os painéis em um laço, ajustar espaçamento e títulos e construir painéis de tamanhos diferentes.
    • Dividir dados em facetas com seaborn
      Dividir um gráfico em painéis por uma ou duas variáveis categóricas com os argumentos col, row e col_wrap de funções no nível da figura ou com FacetGrid, e personalizar a grade resultante.
    • Adicionar anotações e linhas de referência
      Colocar textos, setas, linhas de referência, intervalos sombreados e rótulos de valores em um gráfico, em coordenadas dos dados ou em coordenadas relativas à área de plotagem.
    • Salvar figuras para relatórios e para a web
      Exportar figuras com savefig em formatos rasterizados ou vetoriais, controlar tamanho, resolução, margens e fundo e salvá-las no momento adequado em scripts, notebooks e laços.

Guia de estudo de Visualização com Matplotlib e Seaborn

5 capítulos

1

Construir gráficos com figuras e áreas de plotagem do Matplotlib

Um comando de plotagem precisa de um lugar para desenhar. O Matplotlib torna esse lugar explícito: uma figura contém uma ou mais áreas de plotagem, e cada área contém as marcas e os rótulos. Comece com uma área e depois use os mesmos objetos para adicionar linhas, pontos, barras e configurações úteis. Manter um nome para a figura e para cada área de plotagem facilita alterar o gráfico certo quando um notebook cresce ou uma figura contém vários painéis.

1.1 Configurar uma figura e suas áreas de plotagem

Matplotlib é a biblioteca padrão de gráficos do Python, e tanto pandas quanto seaborn a utilizam para desenhar. Por convenção, ela é importada com import matplotlib.pyplot as plt. Em um notebook Jupyter, o gráfico aparece abaixo da célula que o desenha; em um script, plt.show() exibe as figuras abertas e, em um script comum, aguarda até que suas janelas sejam fechadas.

Uma figura é toda a superfície de desenho: a imagem exibida ou salva. Uma área de plotagem é uma região dentro da figura, com dados, título, rótulos de eixos e limites próprios; uma figura pode conter várias. Um eixo é uma das retas numéricas de uma área de plotagem, o eixo x ou o eixo y, com suas marcas de graduação e rótulos. Cada item visível, como uma linha, um marcador, um texto ou uma barra, é chamado de elemento gráfico.

fig, ax = plt.subplots() cria uma figura com uma área de plotagem e retorna os dois objetos. figsize=(width, height) define o tamanho da figura em polegadas. O padrão é 6,4 × 4,8 polegadas a 100 pontos por polegada, portanto uma figura padrão tem 640 × 480 pixels na tela; plt.subplots(figsize=(8, 4)) cria uma figura mais larga e baixa.

O Matplotlib oferece dois estilos. No estilo orientado a objetos, você chama métodos em objetos explícitos: ax.plot(...), ax.set_title(...). No estilo pyplot, funções como plt.plot(...) e plt.title(...) atuam na área de plotagem “atual”, geralmente a última criada. Ambos desenham os mesmos gráficos; o estilo orientado a objetos é mais claro quando uma figura tem mais de uma área de plotagem ou o código de plotagem está em uma função, por isso este curso o utiliza.

Os dois estilos usam nomes diferentes para as mesmas configurações: plt.title, plt.xlabel e plt.xlim correspondem a ax.set_title, ax.set_xlabel e ax.set_xlim. Um erro frequente é ax.title("Rainfall"): em uma área de plotagem, title é um atributo que contém um objeto de texto, então chamá-lo gera TypeError: 'Text' object is not callable. Use ax.set_title("Rainfall").

months = [1, 2, 3, 4, 5, 6]; temp_c = [3, 5, 9, 13, 17, 20], seguido de

fig, ax = plt.subplots(figsize=(8, 4))
ax.plot(months, temp_c)
ax.set_title("Mean monthly temperature")
ax.set_xlabel("Month")
ax.set_ylabel("Temperature (°C)")

.

As chamadas de desenho adicionam elementos a uma área de plotagem; elas não substituem o que já está nela. Uma segunda chamada ax.plot(...) no mesmo ax adiciona uma segunda linha ao mesmo gráfico. Para obter um gráfico separado, crie uma nova figura com outra chamada plt.subplots() ou desenhe em outra área de plotagem de uma figura com vários painéis.

O pyplot mantém aberta cada figura que criou até que ela seja fechada com plt.close(fig) ou plt.close("all"). Figuras abertas usam memória e, quando há mais de 20 abertas, o Matplotlib emite um aviso. Um código que cria figuras em um laço deve fechar cada figura após salvá-la.

Principais conclusões

  • A figura é a superfície de desenho; uma área de plotagem é uma região onde se desenha o gráfico.
  • Chame os métodos da área de plotagem que deve receber a alteração.
  • Desenhar novamente na mesma área de plotagem adiciona elementos gráficos.
  • Feche as figuras salvas em laços.

1.2 Criar gráficos de linhas e de dispersão

ax.plot(x, y) desenha marcadores ou segmentos de reta que unem os pontos na ordem em que são fornecidos. Um gráfico de linhas é adequado para uma grandeza medida ao longo de uma variável ordenada, como tempo ou distância. Com um argumento, ax.plot(y), os valores de x são, por padrão, 0, 1, 2, ….

Como os pontos são unidos na ordem fornecida, valores de x não ordenados produzem um zigue-zague que vai e volta pelo gráfico. Para x = [3, 1, 2], a linha vai de x = 3 para trás até x = 1 e depois avança até x = 2. Ordene primeiro os dados por x, por exemplo com df.sort_values("x").

Argumentos de estilo: color (um nome como "black" ou "tab:orange", ou um código hexadecimal como "#1f77b4"), linestyle ("-" contínua, "--" tracejada, ":" pontilhada, "-." traço e ponto), linewidth, marker ("o" círculo, "s" quadrado, "^" triângulo) e markersize. Uma string curta de formato combina marcador e estilo de linha: ax.plot(x, y, "o--") desenha círculos unidos por uma linha tracejada. Sem color, cada nova linha recebe a próxima cor do ciclo padrão, que começa com "tab:blue" e "tab:orange".

Atribua um label a cada linha e chame ax.legend() para exibir uma legenda:

ax.plot(months, north, marker="o", label="North")
ax.plot(months, coast, linestyle="--", label="Coast")
ax.legend()

. Se nenhum elemento gráfico tiver um rótulo, ax.legend() não desenha nada e o Matplotlib avisa que não encontrou elementos gráficos com rótulos.

ax.scatter(x, y) desenha um marcador sem ligação para cada observação e é adequado para mostrar a relação entre duas variáveis numéricas. Exemplo: temperatura diária [12, 15, 18, 21, 24, 27, 30, 22] °C e aluguéis de bicicletas [180, 220, 260, 310, 330, 360, 340, 250]; ax.scatter(temp_c, rentals) mostra que os aluguéis em geral aumentam com a temperatura, e a correlação entre as duas listas é de aproximadamente 0,92.

Em ax.scatter, s define a área de cada marcador em pontos quadrados; o padrão é 36, a área de um marcador com 6 pontos de largura. Dobrar s dobra a área, então a largura do marcador cresce apenas por um fator de aproximadamente 1,4. s pode ser um único número ou um valor por ponto, permitindo que o tamanho do marcador represente uma terceira variável.

c colore os pontos: uma cor para todos ou um número por ponto associado a um mapa de cores como cmap="viridis". Guarde o objeto retornado e adicione uma barra de cores: sc = ax.scatter(temp_c, rentals, c=rain_mm, cmap="viridis"); fig.colorbar(sc, ax=ax, label="Rain (mm)").

Quando muitos pontos se sobrepõem (sobreposição excessiva de elementos gráficos), regiões densas viram manchas sólidas e escondem quantos pontos contêm. Reduza a opacidade com alpha=0.3, use marcadores menores ou mostre a densidade, por exemplo com um gráfico de agrupamento em hexágonos (df.plot.hexbin) ou um histograma bidimensional.

ax.plot(x, y, "o"), com um marcador e sem linha, também desenha pontos e é mais rápido para uma quantidade muito grande de pontos, pois todos os marcadores compartilham tamanho e cor. Use ax.scatter quando o tamanho ou a cor precisar variar de um ponto para outro.

Principais conclusões

  • As linhas conectam os pontos na ordem em que são fornecidos.
  • O tamanho no gráfico de dispersão é a área em pontos quadrados.
  • Um mapeamento numérico por cor precisa de uma barra de cores.
  • Use rótulos e uma legenda para identificar as séries.
  • A transparência ajuda a revelar observações sobrepostas.

1.3 Comparar categorias com gráficos de barras

ax.bar(categories, heights) desenha uma barra vertical por categoria; ax.barh(categories, widths) desenha barras horizontais, que deixam espaço para nomes longos de categorias. Quando as categorias são strings, o Matplotlib as coloca em posições igualmente espaçadas, na ordem fornecida, e as usa como rótulos das marcas de graduação. Quando são números, as barras ficam nessas posições em um eixo numérico comum.

Por padrão, as barras começam em uma linha de base de 0, então o comprimento de cada barra mostra seu valor. O argumento width é medido em unidades do eixo x e seu valor padrão é 0,8. Categorias em string são colocadas a uma unidade de distância umas das outras, então o padrão deixa um espaço de 0,2 entre as barras, e width=1 faz com que barras vizinhas se toquem.

200 pessoas foram perguntadas sobre como costumam se deslocar: carro 84, ônibus 52, bicicleta 38, a pé 26. ax.barh(["Car", "Bus", "Bike", "Walk"], [84, 52, 38, 26]) desenha quatro barras horizontais. As proporções são 42%, 26%, 19% e 13%, que somam 100%.

ax.barh coloca a primeira categoria na parte inferior do eixo, pois o eixo y cresce para cima. Para ler uma lista ordenada de cima para baixo, como no exemplo dos deslocamentos, chame ax.invert_yaxis() ou inverta tanto as categorias quanto seus valores antes de criar o gráfico, mantendo cada valor com sua categoria.

Barras agrupadas colocam várias séries lado a lado em cada categoria. Use posições numéricas e desloque cada série pela metade da largura de uma barra:

x = np.arange(3)
ax.bar(x - 0.2, north, width=0.4, label="North")
ax.bar(x + 0.2, coast, width=0.4, label="Coast")
ax.set_xticks(x, labels=["Jan", "Feb", "Mar"])
ax.legend()

. As barras do Norte ficam em −0,2, 0,8 e 1,8, e as do Litoral em 0,2, 1,2 e 2,2, centralizadas em cada marca de graduação.

Barras empilhadas desenham uma segunda série sobre a primeira com bottom=: ax.bar(days, car); ax.bar(days, bus, bottom=car). Se um dia tem 40 viagens de carro e 25 de ônibus, o segmento do ônibus vai de 40 a 65, e a altura total da barra é 65.

bars = ax.bar(...) retorna um contêiner de barras; ax.bar_label(bars) escreve cada valor no fim de sua barra. fmt controla o texto: fmt="%.1f" escreve 3,14 como “3.1”, e fmt="{:.0f} km" o escreve como “3 km”.

O Matplotlib desenha as barras na ordem dos dados, não em ordem de tamanho. Para um gráfico ordenado, ordene primeiro os valores, por exemplo com sorted() em pares ou sort_values() no pandas. O argumento yerr= adiciona barras de erro de um comprimento especificado a cada barra, e ax.errorbar(x, y, yerr=...) faz o mesmo para pontos.

Um gráfico de barras compara valores de categorias distintas, então suas barras ficam separadas por espaços. Um histograma, por sua vez, mostra como uma variável numérica se distribui em intervalos adjacentes, e suas barras se tocam. Desenhar medições como uma barra por linha de dados produz um gráfico de barras de valores brutos, não um histograma.

Principais conclusões

  • Mantenha as categorias associadas a seus valores ao ordenar.
  • Barras agrupadas usam deslocamentos em torno das marcas de graduação das categorias.
  • Barras empilhadas usam bases acumuladas.
  • Os rótulos das barras pertencem ao contêiner retornado.

1.4 Adicionar rótulos, definir escalas e estilizar um gráfico

Defina textos com ax.set_title("..."), ax.set_xlabel("...") e ax.set_ylabel("..."), ou com uma chamada: ax.set(title="Monthly rainfall", xlabel="Month", ylabel="Rainfall (mm)"). Inclua a unidade no rótulo do eixo, por exemplo “Precipitação (mm)” ou “Distância (km)”, para que cada valor das marcas de graduação tenha significado.

O Matplotlib escolhe os limites dos eixos a partir dos dados, com uma pequena margem. Defina-os com ax.set_xlim(1, 12) e ax.set_ylim(0, 120), ou fixe apenas um extremo com ax.set_ylim(bottom=0). ax.set(xlim=(1, 12), ylim=(0, 120)) faz o mesmo em uma chamada.

ax.set_xticks([1, 4, 7, 10]) escolhe as posições das marcas de graduação, e ax.set_xticks([1, 2, 3], labels=["Jan", "Feb", "Mar"]) também substitui seus rótulos. Gire rótulos apertados com ax.tick_params(axis="x", labelrotation=45). Formatadores de rótulos mudam a forma como os valores são escritos: ax.yaxis.set_major_formatter(PercentFormatter(xmax=1, decimals=0)), com PercentFormatter importado de matplotlib.ticker, apresenta o valor 0,25 como “25%”.

ax.set_yscale("log") coloca o eixo y em uma escala logarítmica, na qual distâncias iguais representam razões iguais: o passo de 10 a 100 tem o mesmo comprimento que o de 100 a 1.000. Ela é adequada para valores que abrangem várias ordens de grandeza, como populações de cidades. Um eixo logarítmico não pode mostrar zero nem valores negativos.

ax.legend() coloca a legenda onde ela cobre a menor quantidade de pontos (loc="best", o padrão para a legenda de uma área de plotagem). Escolha uma posição com loc="upper left", adicione um título com title="Station" e distribua as entradas em colunas com ncols=2. ax.legend(bbox_to_anchor=(1.02, 1), loc="upper left") coloca a legenda logo fora da borda direita da área de plotagem.

ax.grid(True, alpha=0.3) adiciona linhas de grade claras nas marcas de graduação; ax.grid(axis="y") desenha apenas as horizontais, o que ajuda a ler as alturas das barras.

Folhas de estilo alteram a aparência padrão de todos os gráficos posteriores: plt.style.use("ggplot"). plt.style.available lista os estilos instalados; os estilos semelhantes aos do seaborn que acompanham o Matplotlib recebem nomes como "seaborn-v0_8-whitegrid". Para aplicar um estilo apenas a um bloco de código, use with plt.style.context("ggplot"):.

Configurações padrão individuais ficam em plt.rcParams, por exemplo plt.rcParams["font.size"] = 12 ou plt.rcParams["figure.figsize"] = (8, 4). Elas se aplicam às figuras criadas posteriormente, e plt.rcdefaults() restaura os padrões do Matplotlib.

fig, ax = plt.subplots(figsize=(8, 4))
ax.plot([1, 2, 3, 4], [62, 48, 55, 40], marker="o", label="North")
ax.set(title="Monthly rainfall, January to April", xlabel="Month", ylabel="Rainfall (mm)", ylim=(0, 70))
ax.set_xticks([1, 2, 3, 4], labels=["Jan", "Feb", "Mar", "Apr"])
ax.legend()
ax.grid(axis="y", alpha=0.3)

.

Em uma figura com várias áreas de plotagem, funções pyplot como plt.title ou plt.xlabel alteram apenas a área atual, geralmente a última criada, então um título pode aparecer no painel errado. Chamar os métodos da área desejada, como axes[0].set_title(...), evita isso.

Principais conclusões

  • A formatação das marcas de graduação muda os rótulos sem mudar os valores.
  • Escalas logarítmicas mostram razões iguais como distâncias iguais.
  • Estilos e rcParams definem padrões para gráficos posteriores.
2

Criar gráficos diretamente a partir do pandas

Uma tabela do pandas muitas vezes já contém os rótulos e valores necessários para um gráfico. Seus métodos de plotagem usam esses rótulos para construir um gráfico do Matplotlib, que você pode finalizar com os mesmos métodos usados em um gráfico construído manualmente. O trabalho importante costuma acontecer antes do desenho: decidir o que uma linha representa, calcular o resumo adequado e organizar a tabela para que grupos, séries e sua ordem correspondam à pergunta.

2.1 Usar o método plot do pandas

Construa a tabela larga de precipitação com uma coluna por estação:

import pandas as pd
wide = pd.DataFrame({
    "North": [62, 48, 55, 40],
    "Coast": [110, 95, 80, 60],
    "Valley": [20, 15, 30, 45]
}, index=pd.Index(["Jan", "Feb", "Mar", "Apr"], name="month"))

Toda Series e todo DataFrame do pandas tem um método .plot que desenha com o Matplotlib e retorna a área de plotagem do Matplotlib em que desenhou. df.plot(kind="bar") e df.plot.bar() são a mesma chamada. Os tipos são "line" (o padrão), "bar", "barh", "hist", "box", "kde" ou "density", "area", "pie", "scatter" e "hexbin".

Por padrão, o índice se torna o eixo x e cada coluna numérica se torna uma linha, com uma legenda criada a partir dos nomes das colunas. Uma Series apresenta seus valores em função do índice. Para escolher colunas, passe x="month" e y="rain_mm", ou uma lista como y=["North", "Coast"].

Uma tabela wide com o índice Jan, Fev, Mar, Abr e as colunas Norte [62, 48, 55, 40], Litoral [110, 95, 80, 60] e Vale [20, 15, 30, 45], todos em milímetros de precipitação. ax = wide.plot(marker="o", figsize=(8, 4), title="Monthly rainfall"); ax.set_ylabel("Rainfall (mm)") desenha três linhas identificadas em uma área de plotagem e depois define o rótulo de y com um método comum do Matplotlib.

Argumentos comuns de .plot: title, xlabel, ylabel, xlim, ylim, figsize, color, legend=False, rot (rotação dos rótulos das marcas de graduação em graus), grid=True e logy=True. ax= desenha em uma área de plotagem existente, por exemplo um painel de plt.subplots(1, 2), em vez de criar uma figura.

subplots=True desenha cada coluna em sua própria área de plotagem e retorna um array do NumPy de áreas de plotagem em vez de uma única área; layout=(2, 2) as organiza em uma grade e sharey=True fornece a elas uma escala y compartilhada. Para a tabela das três estações, wide.plot(subplots=True, layout=(1, 3), sharey=True) produz um painel por estação.

Gráficos de dispersão e de agrupamento em hexágonos existem apenas para DataFrames e precisam de x e y: days.plot.scatter(x="temp_c", y="rentals", c="rain_mm", colormap="viridis") colore os pontos pela precipitação. Uma Series não tem gráfico de dispersão, então s.plot.scatter() gera um erro. df.plot.hist(bins=5) e df.plot.box() produzem um histograma e um diagrama de caixa para cada coluna numérica.

s.plot.pie() desenha um setor para cada valor, com tamanho proporcional à sua parcela do total. Como gráficos de setores precisam de uma Series com partes não negativas de um todo, uma coluna de contagens como s.value_counts() é uma entrada típica.

Gráficos de barras no pandas tratam o índice como categorias e colocam as barras nas posições 0, 1, 2, … quaisquer que sejam os valores do índice. Gráficos de linhas usam os valores reais do índice quando são números ou datas. Portanto, uma linha e barras do pandas desenhadas na mesma área de plotagem só se alinham quando os valores de x da linha correspondem às posições das barras, como em um índice padrão 0, 1, 2, …; para anos como 2020 a 2023, a linha fica muito à direita das barras. Ao combiná-los, desenhe ambos nas mesmas posições.

Com um índice de datas e horas (DatetimeIndex), .plot() coloca datas no eixo x e cria seus rótulos automaticamente. Dados diários costumam ficar mais claros após a reamostragem temporal, por exemplo para médias mensais com s.resample("MS").mean().plot().

.plot desenha apenas colunas numéricas. Se números foram lidos como texto, por exemplo porque uma coluna contém “12 mm”, a coluna é ignorada e, quando não restam dados numéricos, o pandas gera TypeError: no numeric data to plot. Converta primeiro a coluna, por exemplo com pd.to_numeric(...).

Principais conclusões

  • O pandas plota dados numéricos e usa o índice por padrão.
  • Passe uma área de plotagem com ax= para reutilizar um painel.
  • Subgráficos separados retornam um array de áreas de plotagem.
  • Barras e linhas numéricas do pandas usam regras de posicionamento diferentes.

2.2 Remodelar os dados antes de criar gráficos

Um gráfico desenha os valores presentes na tabela, então faça primeiro um resumo. Exemplo: uma tabela longa rain com 12 linhas, uma por estação e mês, e as colunas month, station e rain_mm. rain.groupby("station")["rain_mm"].mean() fornece uma média por estação: Litoral 86,25 mm, Norte 51,25 mm e Vale 27,5 mm. Acrescentar .plot.bar() desenha três barras.

Criar um gráfico das linhas brutas por engano produz leituras individuais em vez das médias solicitadas: rain.plot.bar(x="station", y="rain_mm") desenha 12 barras com nomes de estações repetidos em vez de três médias.

Ordene antes de criar o gráfico para obter barras ordenadas: means.sort_values(ascending=False).plot.bar() coloca a maior média à esquerda. Para um gráfico horizontal, means.sort_values().plot.barh() coloca a maior no topo, pois o primeiro valor é desenhado na parte inferior.

s.value_counts() conta a frequência de cada categoria e lista as contagens da mais frequente à menos frequente. Para os meios de transporte “ônibus”, “carro”, “ônibus”, “bicicleta”, “ônibus”, “carro”, o resultado é ônibus 3, carro 2, bicicleta 1, pronto para .plot.bar(). Use .sort_index() ou .reindex([...]) quando as categorias tiverem uma ordem natural, como os dias da semana.

Um DataFrame em formato largo, com uma coluna por série, produz uma linha ou cor de barra por coluna no pandas. Remodele uma tabela longa com rain.pivot(index="month", columns="station", values="rain_mm"). Quando algum par de índice e coluna ocorre mais de uma vez, pivot gera um erro; use pivot_table(..., aggfunc="mean") ou groupby(["month", "station"])["rain_mm"].mean().unstack().

pivot e pivot_table ordenam o novo índice, então meses em strings aparecem em ordem alfabética, Apr, Feb, Jan, Mar, e um gráfico de linhas percorre os meses na ordem errada. Restaure a ordem real com wide.reindex(["Jan", "Feb", "Mar", "Apr"]) ou armazene o mês como uma categoria ordenada ou como número do mês antes da remodelagem.

Em uma tabela larga, wide.plot.bar() desenha barras agrupadas, um grupo por rótulo do índice e uma cor por coluna, enquanto wide.plot.bar(stacked=True) empilha as colunas. A transposta wide.T.plot.bar() troca os papéis: um grupo por estação, uma cor por mês.

Para obter proporções dentro de cada grupo, normalize uma tabulação cruzada: pd.crosstab(trips["region"], trips["mode"], normalize="index") divide cada contagem pelo total de sua linha, então cada linha soma 1. Se a região N tem duas viagens de carro e uma de ônibus, sua linha é carro 0,67 e ônibus 0,33 (arredondados). .plot.bar(stacked=True) desenha então barras de mesma altura total que mostram a composição de cada região.

O seaborn funciona melhor com dados em formato longo e organizado: uma linha por observação e uma coluna por variável. wide.reset_index().melt(id_vars="month", var_name="station", value_name="rain_mm") transforma a tabela larga de 4 × 3 novamente em 12 linhas com três colunas, para que station possa ser usada para cores ou facetas.

Principais conclusões

  • Agregue as linhas antes de criar o gráfico do resumo solicitado.
  • Um par duplicado na remodelagem com pivot exige uma regra de agregação.
  • Dados largos são adequados para séries em colunas; dados longos, para mapeamentos semânticos.
  • Restaure uma ordem significativa das categorias após a remodelagem.
  • Normalize cada linha para comparar as proporções dos grupos.
3

Criar gráficos estatísticos com seaborn

Gráficos estatísticos associam colunas de tabelas a características visuais e muitas vezes calculam um resumo enquanto são desenhados. O seaborn realiza ambas as tarefas por meio de argumentos nomeados. Uma chamada curta pode mostrar grupos em cores diferentes, calcular médias de observações repetidas ou dividir uma tabela em painéis. Examine esses padrões com cuidado: um gráfico de observações individuais e um gráfico de médias de grupos podem partir das mesmas linhas, mas responder a perguntas diferentes.

3.1 Mapear colunas para características visuais dos gráficos no seaborn

O seaborn é uma biblioteca de gráficos construída sobre o Matplotlib que trabalha diretamente com DataFrames do pandas e calcula resumos estatísticos comuns. Por convenção, é importado com import seaborn as sns. Uma chamada típica indica a tabela e suas colunas: sns.scatterplot(data=days, x="temp_c", y="rentals").

Além de x e y, colunas podem ser associadas a outras características (mapeamentos semânticos): hue define a cor, style define o marcador ou padrão de traços e size define o tamanho do marcador ou a largura da linha. O seaborn escolhe as cores e constrói a legenda. Uma coluna categórica em hue recebe cores distintas; uma coluna numérica recebe um gradiente.

Cada mapeamento precisa de uma coluna em formato longo. Com a tabela longa de precipitação, sns.lineplot(data=rain, x="month", y="rain_mm", hue="station", marker="o") desenha uma linha colorida por estação, com legenda. Se hue indicar uma coluna que não está na tabela, o seaborn gera um ValueError informando que não conseguiu interpretar o valor.

Quando x contém strings, o seaborn coloca as categorias na ordem em que aparecem pela primeira vez nos dados, então meses armazenados como “Jan”, “Feb”, “Mar” nessa ordem de linhas permanecem em ordem de calendário. As funções categóricas, como barplot, boxplot e countplot, aceitam order=["Mon", "Tue", "Wed"] para definir a ordem das categorias, e hue_order define a ordem dos grupos de cores em toda função que tem hue. lineplot não tem argumento order: para corrigir a ordem dos nomes dos meses, transforme a coluna x em uma categoria ordenada, por exemplo pd.Categorical(rain["month"], categories=["Jan", "Feb", "Mar", "Apr"], ordered=True).

As funções no nível da área de plotagem, como scatterplot, lineplot, histplot, boxplot, barplot e heatmap, desenham em uma área de plotagem do Matplotlib, aceitam ax= para escolhê-la e a retornam. As funções no nível da figura, relplot, displot, catplot e lmplot, criam sua própria figura, podem dividi-la em painéis com col e row e retornam um objeto de grade de facetas (FacetGrid) do seaborn.

As funções no nível da figura definem o tamanho por painel: height é a altura de cada painel em polegadas e aspect é sua razão entre largura e altura, então cada painel tem height × aspect polegadas de largura; os padrões são 5 e 1. Como criam sua própria figura, elas não podem desenhar em uma área de plotagem existente: relplot, displot e catplot emitem um aviso e ignoram ax=, e lmplot o rejeita com um TypeError. Elas colocam a legenda fora dos painéis.

sns.set_theme() muda todos os gráficos posteriores, incluindo os feitos apenas com Matplotlib, para a aparência do seaborn: o estilo “darkgrid”, o contexto “notebook” e a paleta padrão do seaborn. style pode ser “darkgrid”, “whitegrid”, “dark”, “white” ou “ticks”; context pode ser “paper”, “notebook”, “talk” ou “poster” e ajusta a escala de fontes e linhas, por exemplo de uma fonte base de 12 pontos para “notebook” a 18 pontos para “talk”.

palette escolhe as cores para hue, por exemplo palette="colorblind", "Set2" ou "viridis". No seaborn 0.13, passar palette sem hue está obsoleto; para colorir barras por categoria, defina hue como a mesma coluna de x e acrescente legend=False: sns.barplot(data=rain, x="station", y="rain_mm", hue="station", legend=False).

O resultado pode ser finalizado com Matplotlib:

ax = sns.scatterplot(...)
ax.set(xlabel="Temperature (°C)", ylabel="Rentals per day", title="Rentals and temperature")

. Para um resultado no nível da figura, use os métodos da grade, como g.set_axis_labels("Temperature (°C)", "Rentals per day"), e g.figure.suptitle("...") para um título geral.

Principais conclusões

  • Mapeamentos semânticos associam colunas a características visuais.
  • Funções no nível da área de plotagem aceitam uma área existente.
  • Funções no nível da figura criam seus próprios painéis e definem seus tamanhos.
  • Temas afetam gráficos posteriores das duas bibliotecas.

3.2 Mostrar relações entre variáveis numéricas

sns.scatterplot(data=days, x="temp_c", y="rentals", hue="weekday", size="rain_mm") desenha um ponto por linha, com cor e tamanho definidos por outras colunas. Combinar hue e style com a mesma coluna atribui a cada grupo uma cor e um marcador distintos, que continuam distinguíveis em escala de cinza.

sns.lineplot agrega por padrão: quando várias linhas compartilham um valor de x, ele desenha a linha passando pela média de seus valores de y e sombreia uma faixa para o intervalo de confiança de 95% dessa média, calculado por reamostragem bootstrap. Exemplo resolvido: em x = 1 os valores de y são 10, 12 e 14, em x = 2 são 20, 21 e 25; a linha passa por 12 e 22.

A faixa padrão mostra a incerteza de cada média, não a amplitude dos dados. errorbar="sd" sombreia uma faixa de um desvio padrão acima e abaixo da média, errorbar=None remove a faixa, e estimator=None (junto com units=) desenha cada série individual sem calcular a média. Com uma linha por valor de x, não há média a calcular nem faixa.

sns.regplot(data=days, x="temp_c", y="rentals") desenha um gráfico de dispersão com uma reta de mínimos quadrados e uma faixa sombreada de confiança de 95% para essa reta; order=2 ajusta uma curva quadrática. sns.lmplot faz o mesmo como função no nível da figura, portanto também pode dividir os dados por hue, col ou row.

Uma linha ajustada resume os dados com o modelo escolhido. Uma reta pode ser traçada sobre dados curvos, então observe os pontos ao redor da linha antes de confiar nela. Uma tendência forte mostra que as variáveis estão associadas nesses dados, sem estabelecer uma causa.

sns.pairplot(df) desenha uma grade com um gráfico de dispersão para cada par de colunas numéricas e a distribuição de cada coluna na diagonal: histogramas por padrão, curvas de densidade quando hue é definido. Quatro colunas numéricas produzem uma grade de 4 × 4 com 16 painéis. corner=True mantém apenas o triângulo inferior, e vars=[...] limita as colunas. A função retorna um PairGrid.

sns.jointplot(data=days, x="temp_c", y="rentals") desenha um gráfico de dispersão com o histograma de cada variável em suas bordas; kind="hex" substitui os pontos por agrupamentos hexagonais, o que ajuda com conjuntos de dados grandes.

sns.relplot(..., kind="scatter") e sns.relplot(..., kind="line") são as versões no nível da figura de scatterplot e lineplot; dispersão é o tipo padrão. Use-as quando a mesma relação deve ser mostrada em painéis separados para cada grupo.

sns.regplot(data=days, x="temp_c", y="rentals") mostra os aluguéis subindo de 180 a 12 °C para aproximadamente 350 nos dias mais quentes, com correlação de cerca de 0,92. O dia de 30 °C tem menos aluguéis (340) que o dia de 27 °C (360), então os pontos se estabilizam na parte superior; um ajuste quadrático (order=2) pode ser comparado com a reta.

Principais conclusões

  • Por padrão, as linhas do seaborn calculam médias de observações repetidas.
  • Uma faixa de confiança descreve a incerteza de uma estimativa.
  • Use units e nenhum estimador para preservar as trajetórias individuais.
  • Inspecione os pontos e também as linhas ajustadas.
  • Matrizes de gráficos de pares comparam variáveis e suas distribuições.

3.3 Comparar grupos com gráficos categóricos

As funções categóricas do seaborn colocam cada categoria nas posições 0, 1, 2, … do eixo categórico. Até números são tratados como rótulos: os anos 2020, 2021 e 2023 são desenhados igualmente espaçados, sem uma lacuna para 2022. native_scale=True mantém um eixo numérico com o espaçamento real.

sns.barplot(data=rain, x="station", y="rain_mm") desenha uma barra por estação cuja altura é a média de suas linhas, com uma barra de erro para o intervalo de confiança de 95% dessa média. Com a tabela de precipitação, as barras são Litoral 86,25, Norte 51,25 e Vale 27,5 mm. estimator="median" ou estimator="sum" muda o resumo; errorbar="sd" ou errorbar=None altera ou remove as barras de erro.

sns.countplot(data=trips, x="mode") conta as linhas em cada categoria e não precisa de uma coluna numérica; sns.barplot resume uma coluna numérica. Use countplot para “quantos” e barplot para “quanto em média”.

sns.pointplot mostra a média de cada grupo como um ponto com uma barra de erro e une os pontos de cada grupo de hue com uma linha. Ele facilita a comparação de mudanças entre categorias, por exemplo a precipitação média de três estações em cada um de quatro meses.

Uma barra de médias esconde a dispersão e o número de observações: uma média de 3 linhas parece tão sólida quanto uma média de 300. Mostrar os dados costuma ser melhor: sns.stripplot desenha cada observação como um ponto com um pequeno deslocamento visual aleatório, e sns.swarmplot organiza os pontos para que não se sobreponham. Um gráfico de pontos por categoria pode ser desenhado sobre um diagrama de caixa ou gráfico de barras na mesma área de plotagem.

Com hue, gráficos de barras, caixa e violino colocam os grupos lado a lado dentro de cada categoria (deslocamento lateral de grupos) por padrão. Gráficos de pontos, pontos por categoria e enxame desenham os grupos na mesma posição, a menos que dodge=True seja definido, então seus pontos podem se sobrepor. Defina a ordem das categorias com order=[...] e a ordem dos grupos com hue_order=[...].

A orientação segue os dados: coloque as categorias no eixo y e os números no eixo x, sns.barplot(data=rain, x="rain_mm", y="station"), para obter barras horizontais com rótulos longos legíveis. orient="y" (ou "h") declara isso explicitamente.

sns.catplot é a função no nível da figura para todos os gráficos categóricos. Seu kind pode ser “strip” (o padrão), “swarm”, “box”, “violin”, “boxen”, “point”, “bar” ou “count”, e col ou row divide o gráfico em painéis.

Principais conclusões

  • Gráficos de contagem contam linhas; gráficos de barras resumem valores numéricos.
  • Gráficos de pontos por categoria e de enxame revelam as observações.
  • O deslocamento lateral separa grupos de hue dentro de uma categoria.
4

Visualizar distribuições e grades de valores

Um gráfico de distribuição descreve uma coleção de medições, enquanto um mapa de calor descreve uma tabela por meio de cores. Esses gráficos condensam muitos valores, então suas configurações afetam o que você pode interpretar. Os limites de classe determinam quais observações são contadas juntas; quartis e bigodes resumem diferentes partes de uma amostra; uma escala de cores associa números a tonalidades. Analise esses cálculos antes de interpretar a imagem final.

4.1 Mostrar uma distribuição com histogramas e curvas de densidade

Um histograma divide a amplitude de uma variável numérica em intervalos adjacentes chamados intervalos de classe e desenha sobre cada intervalo uma barra cuja altura é o número de observações nele. Ele mostra a forma de uma distribuição: onde os valores se concentram, quanto se dispersam, se são assimétricos e se há lacunas ou valores incomuns.

counts, edges, patches = ax.hist(data, bins=5) desenha o histograma e retorna a contagem em cada intervalo e os limites de classe. Com um número inteiro, os intervalos têm a mesma amplitude, do mínimo ao máximo; o padrão é 10 intervalos. Cada intervalo inclui seu limite esquerdo e exclui o direito, exceto o último, que inclui ambos.

20 tempos de deslocamento em minutos: 12, 15, 18, 20, 22, 22, 25, 27, 28, 30, 31, 33, 35, 38, 40, 42, 45, 50, 55, 62. Com bins=5, os limites são 12, 22, 32, 42, 52 e 62, e as contagens são 4, 7, 4, 3 e 2. O valor 22 fica no segundo intervalo porque os intervalos excluem seu limite direito, e 62 é contado no último intervalo porque ele o inclui.

O número e a posição dos intervalos mudam a representação. Os mesmos 20 tempos com limites [10, 20, 30, 40, 50, 60, 70] produzem as contagens 3, 6, 5, 3, 2 e 1. Poucos intervalos escondem a forma; muitos produzem um gráfico irregular com vários intervalos quase vazios. Experimente várias configurações e prefira limites arredondados que os leitores possam interpretar, como passos de 10 minutos.

density=True no Matplotlib, ou stat="density" no seaborn, ajusta a escala das barras para que sua área total seja 1: cada altura é contagem ÷ (n × amplitude do intervalo). Para os dados de deslocamento com cinco intervalos de 10 minutos, a altura da segunda barra é 7 ÷ (20 × 10) = 0,035 por minuto. Uma altura de densidade não é uma probabilidade; altura × amplitude do intervalo é a proporção de observações no intervalo.

sns.histplot(data=commutes, x="minutes") desenha um histograma com seaborn; bins e binwidth controlam os intervalos. stat escolhe a altura: “count” (padrão), “probability” ou “proportion” (as alturas somam 1), “percent” (as alturas somam 100) e “density” (área 1). Para os cinco intervalos de deslocamento, “probability” fornece 0,2, 0,35, 0,2, 0,15 e 0,1.

Para comparar grupos, sns.histplot(data=commutes, x="minutes", hue="mode") sobrepõe um histograma por grupo; multiple="stack" os empilha, multiple="dodge" os coloca lado a lado, e element="step" desenha contornos cuja sobreposição é mais legível. Grupos de tamanhos diferentes são comparados de forma justa com stat="density", common_norm=False, que ajusta cada grupo para uma área de 1.

Uma estimativa de densidade por núcleo (KDE) é uma curva suave que estima a forma da distribuição; a área sob ela é 1. sns.kdeplot(data=commutes, x="minutes") a desenha, e sns.histplot(..., kde=True) a adiciona a um histograma. bw_adjust acima de 1 torna a curva mais suave, abaixo de 1 mais detalhada.

Uma curva KDE se estende além dos menores e maiores valores, então pode mostrar densidade abaixo de 0 minutos para tempos que não podem ser negativos. cut=0 interrompe a curva nos limites dos dados. Para amostras pequenas, a curva pode sugerir uma forma que os dados não sustentam.

No pandas, commutes["minutes"].plot.hist(bins=5, edgecolor="white") desenha um histograma (o padrão é 10 intervalos), e df.hist() desenha um histograma por coluna numérica em uma grade. No seaborn, sns.displot é a versão no nível da figura: kind="hist" (padrão), kind="kde" ou kind="ecdf", em que uma função de distribuição acumulada empírica (ECDF) mostra, para cada valor, a proporção de observações iguais ou inferiores a ele.

Principais conclusões

  • Os limites do histograma determinam a que intervalo cada observação pertence.
  • A densidade usa a área para representar uma proporção.
  • Uma KDE suaviza uma distribuição e depende da largura de banda.
  • Normalize os grupos separadamente para comparar suas formas.

4.2 Resumir e comparar distribuições com diagramas de caixa

Um diagrama de caixa resume uma distribuição: a caixa vai do primeiro quartil (Q1) ao terceiro quartil (Q3), uma linha em seu interior marca a mediana, os bigodes se estendem em direção ao menor e ao maior valor típico, e os pontos além dos bigodes são desenhados individualmente como possíveis valores atípicos. A amplitude interquartil IQR = Q3 − Q1 é o comprimento da caixa e abrange a metade central dos dados.

Por padrão, Matplotlib, pandas e seaborn usam whis=1.5: os limites são Q1 − 1,5 × IQR e Q3 + 1,5 × IQR. Cada bigode termina no valor mais extremo dos dados dentro de seu limite, não no próprio limite, e cada valor fora dos limites é desenhado como um ponto separado.

11 tempos de entrega em minutos: 14, 16, 17, 18, 19, 20, 21, 22, 24, 25, 41. O Matplotlib calcula Q1 = 17,5, mediana = 20 e Q3 = 23, então IQR = 5,5. Os limites são 17,5 − 8,25 = 9,25 e 23 + 8,25 = 31,25. O bigode inferior termina em 14, o superior em 25, e 41 é desenhado como um ponto atípico.

Os quartis dependem do método. As bibliotecas de gráficos usam interpolação linear entre valores ordenados (o padrão do NumPy e do pandas), que fornece 17,5 e 23 no exemplo anterior. O método manual de calcular as medianas das metades inferior e superior sem a mediana geral fornece Q1 = 17 e Q3 = 24 para os mesmos dados. Ambos são válidos; pequenas diferenças entre um cálculo manual e um gráfico vêm dessa escolha.

Desenhe o resumo com a biblioteca que você está usando: ax.boxplot([north, coast], tick_labels=["North", "Coast"]) no Matplotlib (o argumento se chamava labels antes da versão 3.9); rain.boxplot(column="rain_mm", by="station") no pandas, que também adiciona o título geral “Boxplot grouped by station”; sns.boxplot(data=rain, x="station", y="rain_mm") no seaborn, com hue para um segundo agrupamento. whis=(0, 100) desenha os bigodes até o mínimo e o máximo, e showfliers=False esconde os pontos atípicos.

Diagramas de caixa lado a lado permitem comparar grupos rapidamente: compare as medianas, os comprimentos das caixas (dispersão da metade central) e a sobreposição das caixas. Uma mediana próxima de uma extremidade da caixa, ou um bigode muito mais longo que o outro, indica uma distribuição assimétrica.

Um diagrama de caixa mostra apenas cinco números e os valores atípicos. Ele não mostra o número de observações, e distribuições de formas muito diferentes podem ter a mesma caixa: uma distribuição com dois picos separados e outra com um único pico podem compartilhar Q1, a mediana e Q3. Sobrepor os pontos, sns.stripplot(data=rain, x="station", y="rain_mm", color="black", alpha=0.5), ou usar um gráfico de violino revela essa diferença.

sns.violinplot(data=rain, x="station", y="rain_mm") desenha uma curva de densidade espelhada para cada grupo com um pequeno diagrama de caixa dentro (inner="box", o padrão); inner="quart" marca os quartis com linhas. Com um hue de dois níveis, split=True coloca um grupo de cada lado do violino. Como uma KDE, o violino pode se estender além dos dados; cut=0 o interrompe no mínimo e no máximo observados.

Um ponto sinalizado pela regra de 1,5 × IQR é incomum em relação ao restante dos dados, o que é um motivo para investigar o valor. Verifique-o: pode ser um erro de digitação ou um valor real e importante, como uma entrega atrasada pelo fechamento de uma via. Remover pontos apenas porque o gráfico os sinaliza distorce a análise.

Principais conclusões

  • O comprimento da caixa é a amplitude interquartil.
  • Os bigodes terminam em observações dentro dos limites.
  • Os métodos de cálculo dos quartis podem diferir.
  • Pontos além dos bigodes que foram ocultados permanecem nos dados.
  • Pontos e gráficos de violino revelam informações que uma caixa esconde.

4.3 Exibir uma grade de valores como mapa de calor

Um mapa de calor mostra uma tabela de números como uma grade de células coloridas: linhas e colunas são duas categorias (ou variáveis discretizadas em intervalos), e a cor de cada célula representa seu valor. Ele é adequado para padrões em tabelas de duas entradas, como visitantes por dia e horário, e em matrizes de correlação.

sns.heatmap(table) recebe uma tabela larga, usa seu índice como rótulos das linhas e suas colunas como rótulos das colunas e adiciona uma barra de cores como legenda. A tabela geralmente vem de pivot_table: visits.pivot_table(index="day", columns="slot", values="visitors", aggfunc="mean").

Um museu conta visitantes por período de meio dia. Sábado de manhã 120 e 140, sábado à tarde 200; domingo de manhã 90, domingo à tarde 160; segunda-feira de manhã 40, segunda-feira à tarde 70 e 90. A tabela dinâmica de médias é segunda-feira 40 e 80, sábado 130 e 200, domingo 90 e 160 (manhã e tarde). sns.heatmap(pt, annot=True, fmt=".0f", cmap="Blues") mostra a célula mais movimentada, sábado à tarde, como a mais escura. A remodelagem ordena os dias alfabeticamente (Mon, Sat, Sun); pt.reindex(["Sat", "Sun", "Mon"]) restauraria uma ordem escolhida.

annot=True escreve cada valor em sua célula, e fmt define o formato numérico. O padrão ".2g" mantém dois algarismos significativos, então 43,25 é exibido como “43” e 1234 como “1.2e+03”. Use fmt=".0f" para números inteiros ou fmt=".2f" para duas casas decimais; fmt="d" funciona apenas com dados inteiros e gera um ValueError para números de ponto flutuante.

Um mapa de calor de correlação começa com corr = df.corr(numeric_only=True), uma tabela quadrada e simétrica cujos coeficientes definidos variam de −1 a 1. Colunas numéricas não constantes têm 1 na diagonal; colunas constantes têm correlações indefinidas. No pandas 2 e posteriores, numeric_only tem False como padrão, então df.corr() gera um erro quando a tabela tem uma coluna de texto. Desenhe-o com sns.heatmap(corr, annot=True, fmt=".2f", cmap="vlag", vmin=-1, vmax=1, center=0).

Oito dias com temperatura (°C), aluguéis de bicicletas, precipitação (mm) e vento (km/h). A matriz de correlação fornece temperatura e aluguéis 0,92, aluguéis e precipitação −0,82, precipitação e vento 0,75 e temperatura e vento −0,38. Com o mapa de cores “vlag”, o par com forte correlação positiva aparece em vermelho escuro, o par com forte correlação negativa em azul escuro e o par com correlação fraca entre temperatura e vento em um tom claro próximo do centro branco.

Sem vmin e vmax, as cores vão do menor ao maior valor daquela tabela, então a mesma cor pode representar valores diferentes em dois mapas de calor. Fixe os limites para compará-los e use vmin=-1, vmax=1 para correlações. Um mapa de cores sequencial, como “rocket” (o padrão do seaborn), “viridis” ou “Blues”, é adequado para valores que vão de baixo a alto; um mapa de cores divergente, como “vlag”, “coolwarm” ou “RdBu_r”, com center no ponto médio significativo, é adequado para valores acima e abaixo de uma referência como 0. Com center definido e sem cmap, o seaborn usa o mapa divergente “icefire”.

Opções úteis: linewidths=0.5 desenha linhas finas entre as células, square=True torna as células quadradas, cbar_kws={"label": "Visitors"} adiciona um rótulo à barra de cores e valores ausentes (NaN) ficam em branco. mask=np.triu(np.ones_like(corr, dtype=bool)) esconde o triângulo superior e a diagonal de uma matriz de correlação, que repetem o triângulo inferior.

No Matplotlib, im = ax.imshow(values, cmap="viridis"); fig.colorbar(im, ax=ax) desenha um mapa de calor de um array de 2 dimensões, com a linha 0 no topo; “viridis” é o mapa de cores padrão do Matplotlib. imshow identifica os eixos com números de linhas e colunas, então defina os nomes: ax.set_xticks(range(len(cols)), labels=cols). ax.pcolormesh é uma alternativa quando as células têm tamanhos diferentes.

Um coeficiente de correlação mede apenas a força de uma associação linear. Uma correlação próxima de 0 não descarta uma relação curva forte, e um valor atípico pode aumentar ou diminuir muito um coeficiente. Verifique os gráficos de dispersão correspondentes, por exemplo com uma matriz de gráficos de pares, antes de interpretar um mapa de calor de correlação.

Principais conclusões

  • As cores do mapa de calor representam os valores da tabela.
  • Fixe os limites de cores para comparar gráficos.
  • Escalas de correlação vão de −1 a 1.
  • Verifique os gráficos de dispersão antes de interpretar correlações.
5

Construir figuras com vários painéis, adicionar anotações e exportá-las

Uma figura útil muitas vezes precisa de várias visões dos mesmos dados. Painéis permitem comparar grupos, anotações relacionam uma afirmação a um valor específico, e configurações de exportação transformam o resultado em uma imagem adequada ao seu destino. Mantenha o controle da figura durante todo esse processo. O objeto que contém seus gráficos também contém o tamanho geral e é a forma mais confiável de salvar exatamente o resultado que você construiu.

5.1 Organizar vários gráficos em uma figura

Pequenos múltiplos são um conjunto de gráficos do mesmo tipo, um para cada subconjunto dos dados, desenhados com as mesmas escalas e colocados lado a lado para permitir a comparação dos subconjuntos. No Matplotlib, eles são construídos como uma grade de áreas de plotagem em uma figura.

fig, axes = plt.subplots(2, 3, figsize=(12, 6)) retorna uma figura e um array do NumPy de 2 × 3 áreas de plotagem. axes[0, 0] é o painel superior esquerdo e axes[1, 2] o inferior direito. Com uma linha ou uma coluna, o array é unidimensional, então plt.subplots(1, 3) fornece axes[0], axes[1] e axes[2]. axes.flat percorre todos os painéis linha por linha.

O próprio array não pode desenhar: axes.plot(...) gera AttributeError: 'numpy.ndarray' object has no attribute 'plot'. Indexe primeiro um painel, como em axes[0, 1].plot(...).

sharex=True e sharey=True dão a todos os painéis os mesmos limites de x ou y, então alturas iguais representam valores iguais em todos os painéis e apenas os painéis externos mostram os rótulos das marcas de graduação. Sem eixos compartilhados, cada painel ajusta sua escala aos próprios dados, e uma amplitude pequena pode parecer tão grande quanto uma amplitude grande.

fig, axes = plt.subplots(2, 2, sharey=True, layout="constrained"), seguido de for ax, (name, grp) in zip(axes.flat, rain.groupby("station")): ax.plot(grp["month_num"], grp["rain_mm"], marker="o"); ax.set_title(name). As três estações preenchem três dos quatro painéis; axes[1, 1].axis("off") esconde o quarto, vazio.

Rótulos de painéis vizinhos podem se sobrepor. layout="constrained" em plt.subplots ou plt.figure ajusta o espaçamento automaticamente; fig.tight_layout(), chamado após o desenho, é a alternativa mais antiga. fig.suptitle("Monthly rainfall by station") adiciona um título para toda a figura, e fig.supxlabel(...) e fig.supylabel(...) adicionam rótulos compartilhados aos eixos.

Painéis de tamanhos diferentes: plt.subplots(1, 2, gridspec_kw={"width_ratios": [2, 1]}) torna o painel esquerdo duas vezes mais largo que o direito. fig, axd = plt.subplot_mosaic([["top", "top"], ["left", "right"]]) retorna um dicionário de áreas de plotagem, neste caso um painel largo axd["top"] acima de dois menores.

Gráficos do pandas e funções do seaborn no nível da área de plotagem podem preencher painéis escolhidos com ax=: wide["North"].plot(ax=axes[0, 0]) ou sns.histplot(data=commutes, x="minutes", ax=axes[0, 1]). É assim que gráficos das três bibliotecas são combinados em uma figura.

Principais conclusões

  • Indexe um array de áreas de plotagem antes de desenhar.
  • Escalas compartilhadas permitem comparar painéis.
  • A disposição com restrições cria espaço para os rótulos.

5.2 Dividir dados em facetas com seaborn

A divisão em facetas desenha o mesmo gráfico uma vez para cada nível de uma variável categórica, cada um em seu próprio painel, com eixos compartilhados. As funções do seaborn no nível da figura fazem isso com col= (painéis lado a lado), row= (painéis empilhados) e col_wrap= (inicia uma nova linha após esse número de colunas).

sns.relplot(data=rain, x="month_num", y="rain_mm", col="station", col_wrap=2, kind="line", height=3, aspect=1.5) desenha três painéis, dois na primeira linha e um na segunda. Cada painel tem 3 polegadas de altura e 3 × 1,5 = 4,5 polegadas de largura, então a figura tem aproximadamente 9 × 6 polegadas.

row e col juntos criam uma grade com um painel por combinação de níveis: duas estações do ano nas linhas e três estações de medição nas colunas produzem 2 × 3 = 6 painéis. col_wrap não pode ser combinado com row.

Os mesmos argumentos funcionam para qualquer tipo de gráfico: sns.displot(data=commutes, x="minutes", col="mode") produz um histograma por meio de transporte, e sns.catplot(data=rain, x="station", y="rain_mm", col="season", kind="box") produz diagramas de caixa por estação do ano.

Por padrão, os painéis compartilham seus eixos x e y, então as alturas podem ser comparadas entre painéis. Deixar cada painel ajustar sua escala aos próprios dados mostra detalhes dentro de grupos pequenos, mas pode tornar enganosa uma comparação visual rápida entre painéis. Com relplot e displot, passe facet_kws={"sharey": False}; catplot aceita sharey=False diretamente, e passá-lo também em facet_kws gera um TypeError.

sns.FacetGrid constrói a grade diretamente e depois desenha em cada painel: g = sns.FacetGrid(commutes, col="mode", height=3); g.map_dataframe(sns.histplot, x="minutes"); g.add_legend(). g.map(plt.scatter, "temp_c", "rentals") passa as colunas indicadas como argumentos posicionais a uma função de plotagem.

Personalize a grade com seus métodos: g.set_titles("{col_name}") define os títulos dos painéis a partir dos nomes dos níveis, g.set_axis_labels("Month", "Rainfall (mm)") adiciona rótulos a todos os eixos, e g.set(ylim=(0, 120)) aplica uma configuração da área de plotagem a cada painel. g.axes_dict["Coast"] ou g.axes.flat permite acessar áreas individuais, e g.figure.suptitle("Rainfall by station", y=1.02) adiciona um título geral acima dos painéis.

hue e col dividem os dados por uma variável. hue sobrepõe os grupos em uma área de plotagem, o que facilita a comparação direta de poucos grupos; col os separa, mantendo a legibilidade quando linhas ou pontos se sobreporiam ou quando há muitos grupos. Ambos podem ser usados ao mesmo tempo, por exemplo col="station", hue="season".

Funções no nível da figura não desenham em uma área de plotagem existente (relplot, displot e catplot ignoram ax= com um aviso, lmplot o rejeita) e não aceitam figsize do Matplotlib (passá-lo gera um erro): defina o tamanho da grade com height e aspect. Para colocar um gráfico com facetas ao lado de outros gráficos em uma figura do Matplotlib, construa os painéis com plt.subplots e funções no nível da área de plotagem.

Principais conclusões

  • Facetas dividem as linhas em painéis por grupo.
  • As dimensões dos painéis usam height e aspect.
  • Os métodos da grade personalizam toda a apresentação.
  • Gráficos no nível da figura não podem preencher uma área de plotagem existente.

5.3 Adicionar anotações e linhas de referência

ax.text(x, y, "text") escreve texto em um ponto dado em coordenadas dos dados, nas mesmas unidades dos valores plotados. ha (“left”, “center”, “right”) e va (“top”, “center”, “bottom”) alinham o texto a esse ponto; fontsize e color definem seu estilo.

Com transform=ax.transAxes, as posições são frações da área de plotagem: (0, 0) é o canto inferior esquerdo e (1, 1) o superior direito. ax.text(0.02, 0.95, "n = 20", transform=ax.transAxes, va="top") mantém uma nota no canto superior esquerdo quaisquer que sejam os dados e os limites. O texto em coordenadas dos dados se move quando os limites mudam e pode ficar fora da área de plotagem.

ax.annotate("Wettest month", xy=(1, 110), xytext=(2, 115), arrowprops=dict(arrowstyle="->")) escreve o texto em xytext e desenha uma seta até o ponto xy; ambos estão em coordenadas dos dados por padrão. textcoords="offset points" faz de xytext um deslocamento a partir de xy em pontos, por exemplo xytext=(10, 10) para 10 pontos à direita e para cima.

Linhas de referência atravessam toda a área de plotagem: ax.axhline(50, color="gray", linestyle="--", label="Target") desenha uma linha horizontal em y = 50, e ax.axvline(...) desenha uma vertical. ax.axvspan(6, 8, alpha=0.2) sombreia o intervalo de x = 6 a x = 8, por exemplo um período de férias. ax.hlines(y, xmin, xmax) desenha linhas horizontais em um intervalo limitado.

No histograma dos 20 tempos de deslocamento, a média é 650 ÷ 20 = 32,5 minutos e a mediana é 30,5 minutos. ax.axvline(32.5, color="black", linestyle="--"); ax.text(33.5, 6.5, "mean 32.5 min") marca a média, que fica à direita da mediana porque alguns deslocamentos longos a elevam.

Valores das barras: ax.bar_label(bars, fmt="%.0f") identifica as barras retornadas por ax.bar. Para barras desenhadas pelo pandas ou seaborn, as barras ficam armazenadas em ax.containers, então ax.bar_label(ax.containers[0]) identifica a primeira série. padding=3 afasta os rótulos 3 pontos das extremidades das barras.

Formas vêm de matplotlib.patches: ax.add_patch(Rectangle((x, y), width, height, fill=False, edgecolor="red")) contorna uma região em coordenadas dos dados, e Circle e Polygon funcionam da mesma maneira.

Textos podem ser calculados a partir dos dados com f-strings, para que os rótulos permaneçam corretos quando os dados mudarem: ax.text(..., f"mean {commutes['minutes'].mean():.1f} min"). Anotações são desenhadas sobre os dados; coloque-as em áreas vazias e use poucas, para destacar o que importa.

Principais conclusões

  • Coordenadas dos dados fixam o texto às medições.
  • Coordenadas da área de plotagem fixam o texto ao painel.
  • Uma anotação separa o ponto indicado da posição do texto.
  • Calcule a partir dos dados os rótulos que mudam.

5.4 Salvar figuras para relatórios e para a web

fig.savefig("rainfall.png") salva a figura; a extensão do arquivo define o formato: PNG e JPEG são imagens rasterizadas feitas de pixels, enquanto SVG e PDF são imagens vetoriais feitas de formas. format="pdf" define o formato explicitamente.

Imagens rasterizadas têm um número fixo de pixels e ficam borradas quando ampliadas; arquivos vetoriais permanecem nítidos em qualquer tamanho e são adequados para relatórios, impressão e documentos. PNG é um bom formato rasterizado para gráficos na web e em slides. A compressão JPEG tem perda de dados e borra linhas finas e textos, sendo uma escolha ruim para gráficos.

Tamanho em pixels = tamanho da figura em polegadas × dpi (pontos por polegada). fig, ax = plt.subplots(figsize=(8, 5)) salvo com dpi=150 produz 8 × 150 por 5 × 150 = 1200 × 750 pixels. Sem dpi, savefig usa o dpi da própria figura, 100 por padrão, então a mesma figura fica com 800 × 500 pixels. Para formatos vetoriais, o dpi afeta apenas as partes rasterizadas incorporadas.

As larguras de texto e de linhas são definidas em pontos (1 ponto = 1/72 de polegada), em relação às polegadas da figura. Aumentar o dpi adiciona pixels sem mudar o tamanho aparente do texto em relação ao gráfico; aumentar figsize torna o texto relativamente menor. Escolha figsize para o tamanho final de exibição e dpi para a nitidez.

bbox_inches="tight" corta margens vazias e inclui itens que ficam fora da figura, como uma legenda colocada fora da área de plotagem; a imagem salva fica um pouco menor ou maior que tamanho da figura × dpi. pad_inches=0.1 define a margem mantida ao redor dela.

transparent=True salva sem fundo, o que é adequado para slides com fundo colorido; facecolor="white" força um fundo branco, o que importa quando um tema escuro do notebook poderia aparecer no arquivo.

plt.savefig salva a figura atual, então chame-o antes de um plt.show() bloqueante: quando a janela é fechada, o pyplot deixa de acompanhar essa figura, e uma chamada posterior a plt.savefig(...) salva uma figura nova e vazia. Em um notebook Jupyter, o pyplot também deixa de acompanhar a figura ao fim da célula, então plt.savefig em uma célula posterior salva uma imagem vazia. Manter a figura em uma variável evita os dois problemas: fig.savefig(...) continua funcionando após plt.show() ou em uma célula posterior do notebook.

Resultados do seaborn são salvos da mesma forma: um gráfico no nível da área de plotagem por meio de sua figura, ax.figure.savefig("box.png", dpi=200), e uma grade no nível da figura com g.savefig("facets.png", dpi=200), que usa caixas delimitadoras ajustadas ao conteúdo por padrão.

for name, grp in rain.groupby("station"):
    grp = grp.sort_values("month_num")
    fig, ax = plt.subplots(figsize=(6, 4))
    ax.plot(grp["month_num"], grp["rain_mm"], marker="o")
    ax.set(title=name, xlabel="Month", ylabel="Rainfall (mm)")
    fig.savefig(f"rain_{name}.png", dpi=150, bbox_inches="tight")
    plt.close(fig)

. Fechar cada figura mantém baixo o uso de memória e evita o aviso sobre mais de 20 figuras abertas.

Principais conclusões

  • Salve o objeto de figura que você construiu.
  • Polegadas vezes dpi fornece as dimensões rasterizadas sem corte.
  • Caixas delimitadoras ajustadas ao conteúdo mudam os limites da imagem exportada.
  • A saída vetorial preserva as formas.
  • Feche cada figura após a exportação em lote.

Exercícios resolvidos de Visualização com Matplotlib e Seaborn

5 Lições Interativas

1

Construir gráficos com figuras e áreas de plotagem do Matplotlib

15 passos
Construir, identificar e diagnosticar uma figura do Matplotlib.
  1. 1
    IntroduçãoConstrua um gráfico de cada vez

    Um comando de plotagem precisa de um lugar para desenhar. O Matplotlib torna esse lugar explícito: uma figura contém uma ou mais áreas de plotagem, e cada área contém as marcas e os rótulos. Comece com uma área e depois use os mesmos objetos para adicionar linhas, pontos, barras e configurações úteis. Manter um nome para a figura e para cada área de plotagem facilita alterar o gráfico certo quando um notebook cresce ou uma figura contém vários painéis.

  2. 2
    ExplicaçãoMantenha uma referência à figura

    Uma figura contém a imagem completa. Uma área de plotagem contém um gráfico e seus eixos de coordenadas. Crie ambas explicitamente para que os comandos posteriores tenham um destino claro.

    import matplotlib.pyplot as plt
    fig, ax = plt.subplots(figsize=(7, 4))
    

    A largura e a altura são dadas em polegadas. A variável ax aponta para a área de plotagem dentro de fig; é o objeto que receberá a linha e seus rótulos.

  3. 3
    ExemploDesenhe nessa área

    Adicione uma série curta de temperaturas à área de plotagem que você acabou de criar. Cada par se torna um ponto na linha.

    ax.plot([1, 2, 3], [8, 11, 10])
    ax.set(title="Daily temperature",
           xlabel="Day", ylabel="Temperature (°C)")
    

    Chamar ax.plot novamente adicionaria outra linha a essa mesma área. Em um script, plt.show() exibe a figura; um notebook normalmente a exibe abaixo da célula.

  4. 4
    DesafioCorrija uma chamada de título

    A chamada ax.title("Daily temperature") gera um erro “Text object is not callable”. Como ela deve ser alterada?

    ---reveal---

    Use ax.set_title("Daily temperature"). O atributo title da área de plotagem já é um objeto de texto; set_title é o método que o altera. O equivalente em pyplot é plt.title(...), mas ele atua na área de plotagem atual.

  5. 5
    ExplicaçãoMantenha as observações pareadas

    Uma linha conecta os pontos na ordem de entrada. Se a coluna de distância apresenta 4, 1, 3 km, a linha recua antes de avançar. Ordene as observações completas por distância, preservando cada elevação junto de sua distância original.

    route = route.sort_values("distance_km")
    ax.plot(route["distance_km"], route["elevation_m"])
    

    Um gráfico de dispersão não precisa de uma ordem de conexão porque cada marcador é uma observação separada.

  6. 6
    ExemploIdentifique cada série

    Estilos de linha e de marcador também podem identificar séries, além da cor. Adicione um rótulo ao desenhar e depois peça à área de plotagem que construa sua legenda.

    ax.plot([1, 2, 3], [4, 8, 7], "o--", label="East")
    ax.plot([1, 2, 3], [6, 7, 9], "s-", label="West")
    ax.legend(title="Site")
    

    Para um gráfico de dispersão, valores numéricos de c precisam de uma barra de cores para explicar seu gradiente. Reduza alpha quando pontos sobrepostos esconderem a amostra.

  7. 7
    DesafioPreveja uma mudança de tamanho

    Um marcador de dispersão usa s=25. Você o altera para s=100 com a mesma forma de marcador. Como sua largura muda?

    ---reveal---

    A largura dobra. A área cresceu por um fator de quatro, e as dimensões lineares crescem pela raiz quadrada desse fator. O s do gráfico de dispersão é medido em pontos quadrados; interpretá-lo como largura levaria à previsão incorreta de um aumento de quatro vezes.

  8. 8
    ExplicaçãoPosicione categorias e valores

    Barras usam posições de categorias separadas. Comece com um número por categoria; strings se tornam rótulos igualmente espaçados na ordem fornecida. Um gráfico horizontal dá espaço a nomes longos.

    fig, ax = plt.subplots()
    bars = ax.barh(["Bus", "Rail", "Walk"], [48, 37, 25])
    ax.invert_yaxis()
    ax.bar_label(bars)
    

    A inversão coloca a primeira categoria no topo. Inverter apenas os nomes associaria os valores às categorias erradas.

  9. 9
    ExemploConstrua uma pilha a partir da base

    Suponha que as viagens em um dia útil consistam em 32 viagens de ônibus e 18 de trem. O segundo segmento da barra deve começar no topo do primeiro.

    ax.bar(["Weekday"], [32], label="Bus")
    ax.bar(["Weekday"], [18], bottom=[32], label="Rail")
    ax.legend()
    

    O segmento de trem tem altura 18 e termina em 50. Se um terceiro meio for adicionado, sua linha de base será o total acumulado dos dois segmentos já desenhados.

  10. 10
    DesafioLocalize as barras agrupadas

    Duas barras têm largura 0,4 cada e devem ser centralizadas juntas na posição 1 da categoria. Onde devem ficar seus centros?

    ---reveal---

    Use 0,8 e 1,2, a meia largura de cada lado da marca de graduação. Suas bordas internas se encontram em 1, e o par fica centralizado na categoria. Usar as posições 1 e 1,4 produziria um par de barras vizinhas, mas deslocaria seu centro geral para longe da marca da categoria.

  11. 11
    ExplicaçãoSepare posições de rótulos

    Marcas de graduação indicam posições de coordenadas; seus rótulos são o texto exibido nelas. Forneça ambos juntos ao substituir posições numéricas de meses por nomes.

    ax.set_xticks([1, 2, 3], labels=["Jan", "Feb", "Mar"])
    ax.set_ylabel("Rainfall (mm)")
    ax.grid(axis="y", alpha=0.3)
    

    Um formatador altera a forma de exibição dos números existentes. Ele não muda a escala dos dados, então verifique se os percentuais estão armazenados como frações ou como números de 0 a 100.

  12. 12
    ExemploEscolha uma escala com significado

    Passos iguais em uma escala linear representam diferenças iguais. Passos iguais em uma escala logarítmica representam razões iguais.

    ax.set_yscale("log")
    

    Os valores 5, 50 e 500 têm espaçamento igual porque cada um é dez vezes o anterior. Zero e valores negativos não podem aparecer em uma escala logarítmica comum. Estilos controlam a aparência separadamente: use um contexto de estilo quando uma aparência diferente deve se aplicar a apenas um bloco de código.

  13. 13
    DesafioAdicione um título ao painel desejado

    Uma figura com dois painéis precisa de um título no primeiro, mas plt.title(...) altera o segundo. Como o código pode atingir o primeiro painel de forma confiável?

    ---reveal---

    Chame axes[0].set_title(...). A área de plotagem indicada é explícita, então o estado atual do pyplot deixa de decidir o destino. Isso importa quando uma figura tem vários painéis ou uma função auxiliar cria ou seleciona outra área de plotagem.

  14. 14
    DesafioExplique uma escala numérica de cores

    Um gráfico de dispersão usa a cor dos pontos para a quantidade de chuva e a área dos marcadores para o volume de aluguéis. Sua legenda identifica as estações, mas não fornece uma escala numérica de cores. O que ainda falta na figura?

    ---reveal---

    Adicione uma barra de cores associada ao resultado do gráfico de dispersão e identifique-a como “Precipitação (mm)”. A legenda das estações explica os grupos, enquanto a barra de cores explica os tons numéricos. Manter o objeto retornado pelo gráfico de dispersão permite que fig.colorbar use o mesmo mapeamento dos pontos desenhados.

  15. 15
    RecapitulaçãoVerifique o resultado construído

    Um gráfico tem uma superfície de desenho, uma área de plotagem e elementos gráficos associados a essa área. Verifique se cada série mantém os pares de observações pretendidos, se os rótulos identificam variáveis e unidades e se os mapeamentos numéricos por cor têm uma escala. Quando uma alteração afeta o lugar errado, inspecione qual área de plotagem recebeu a chamada do método. Quando uma forma parecer errada, inspecione a ordem e as coordenadas dos dados antes de mudar seu estilo.

2

Criar gráficos diretamente a partir do pandas

9 passos
Preparar os valores e o formato adequados antes de desenhar.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoUse a tabela como base do gráfico
  2. 2
    ExplicaçãoUse os rótulos da tabela
  3. 3
    ExemploEscolha colunas numéricas
  4. 4
    DesafioAlinhe linhas e barras
  5. 5
    ExplicaçãoResuma antes de desenhar
  6. 6
    ExemploEscolha um formato para a próxima biblioteca
  7. 7
    DesafioCorrija um par repetido na remodelagem com pivot
  8. 8
    DesafioResuma e remodele em conjunto
  9. 9
    RecapitulaçãoVerifique o resultado construído
3

Criar gráficos estatísticos com seaborn

12 passos
Relacionar os mapeamentos e padrões estatísticos do seaborn ao gráfico.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoInterprete o que a função calcula
  2. 2
    ExplicaçãoMapeie variáveis para características visuais
  3. 3
    ExemploEscolha quem define a disposição
  4. 4
    DesafioEscolha a função adequada à disposição
  5. 5
    ExplicaçãoInterprete o estimador da linha
  6. 6
    ExemploPreserve cada trajetória
  7. 7
    DesafioInterprete uma faixa estreita
  8. 8
    ExplicaçãoConte linhas ou resuma valores
  9. 9
    ExemploMostre as observações
  10. 10
    DesafioEscolha o resumo
  11. 11
    DesafioExplique as barras diferentes
  12. 12
    RecapitulaçãoVerifique o resultado construído
4

Visualizar distribuições e grades de valores

12 passos
Partir das observações para chegar a distribuições e grades de cores.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoInterprete dados condensados com cuidado
  2. 2
    ExplicaçãoConte corretamente um intervalo de classe
  3. 3
    ExemploConverta contagem em densidade
  4. 4
    DesafioCompare intervalos de amplitudes diferentes
  5. 5
    ExplicaçãoCalcule os limites a partir da caixa
  6. 6
    ExemploEncontre a observação na ponta do bigode
  7. 7
    DesafioExamine o que uma caixa idêntica esconde
  8. 8
    ExplicaçãoComece pela grade numérica
  9. 9
    ExemploDefina o significado das cores
  10. 10
    DesafioInvestigue tonalidades iguais
  11. 11
    DesafioExamine dois resumos em conjunto
  12. 12
    RecapitulaçãoVerifique o resultado construído
5

Construir figuras com vários painéis, adicionar anotações e exportá-las

16 passos
Organizar painéis, fixar anotações e exportar o resultado.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoPrepare uma figura para compartilhar
  2. 2
    ExplicaçãoCrie painéis que possam ser acessados
  3. 3
    ExemploPreencha a grade com grupos
  4. 4
    DesafioMantenha justas as comparações de escala
  5. 5
    ExplicaçãoDeixe o seaborn dividir a tabela
  6. 6
    ExemploPersonalize a grade como um todo
  7. 7
    DesafioAltere o compartilhamento pelo argumento adequado
  8. 8
    ExplicaçãoEscolha o que fixa o texto
  9. 9
    ExemploAssocie um rótulo a um pico
  10. 10
    DesafioMantenha correto um rótulo após a filtragem
  11. 11
    ExplicaçãoEscolha as dimensões antes dos pixels
  12. 12
    ExemploSalve a figura mantida em uma variável
  13. 13
    DesafioCombine decisões de disposição e exportação
  14. 14
    DesafioConclua um lote reproduzível
  15. 15
    DicaInspecione o resultado salvo
  16. 16
    RecapitulaçãoVerifique o resultado construído

Questões de Visualização com Matplotlib e Seaborn

50 Questões de Prática em 5 conjuntos

Conjunto 1: Aplique escolhas de plotagem a novos dados10 Questões de Prática

Questão 1 de 10

Qual sistema de coordenadas mantém uma nota perto do canto superior esquerdo de um painel quando os limites dos dados mudam?
  1. As unidades da variável x
  2. As unidades da variável y
  3. Coordenadas da área de plotagem
  4. Coordenadas dos dados
Mostrar respostaOcultar resposta
Resposta: C
Coordenadas da área de plotagem descrevem frações dessa área, então uma posição próxima de (0, 1) permanece perto do canto superior esquerdo. Coordenadas dos dados descrevem valores das medições e, portanto, movem-se na tela quando os limites mudam, o que é útil para identificar uma observação específica.

Questão 2 de 10

Em ax.scatter(x, y, s=64), o que 64 especifica?
  1. A área do marcador em pontos quadrados
  2. A largura do marcador em pontos
  3. A opacidade do marcador em porcentagem
  4. O raio do marcador em pontos
Mostrar respostaOcultar resposta
Resposta: A
O argumento s do gráfico de dispersão controla a área do marcador em pontos quadrados. Ele não é uma largura nem um raio: mudar a área por um fator de quatro muda as dimensões lineares do marcador por um fator de dois, considerando a mesma forma de marcador.

Questão 3 de 10

Com os limites [0, 5, 10, 15], qual intervalo contém o valor 5?
  1. Nenhum intervalo, pois é um limite
  2. Ambos os intervalos que tocam o valor 5
  3. O intervalo de 0 até antes de 5
  4. O intervalo de 5 até antes de 10
Mostrar respostaOcultar resposta
Resposta: D
Os intervalos internos incluem seu limite esquerdo e excluem o direito, então 5 entra no intervalo que começa em 5. Contá-lo nos dois intervalos adjacentes contaria a observação duas vezes. Apenas o último intervalo também inclui seu limite mais à direita.

Questão 4 de 10

Uma caixa tem Q1 = 12 e Q3 = 20. Os valores observados acima de Q3 são 24, 30 e 35. Onde termina o bigode superior padrão?
  1. 24
  2. 30
  3. 32
  4. 35
Mostrar respostaOcultar resposta
Resposta: B
A IQR é 8, então o limite superior é 20 + 1,5 × 8 = 32. O maior valor observado dentro dele é 30, que é a ponta do bigode. O limite calculado em 32 é um ponto de corte, não um valor que precise aparecer nos dados.

Questão 5 de 10

Um gráfico armazena proporções como frações e tem uma meta de 75%. Qual combinação posiciona a meta corretamente e apresenta o eixo y em porcentagens?
  1. ax.axhline(0.75) e PercentFormatter(xmax=100)
  2. ax.axhline(0.75) e PercentFormatter(xmax=1)
  3. ax.axhline(75) e PercentFormatter(xmax=100)
  4. ax.axhline(75) e PercentFormatter(xmax=1)
Mostrar respostaOcultar resposta
Resposta: B
A meta armazenada deve usar a mesma escala de frações dos dados, então desenhe-a em 0,75. Um formatador de porcentagem com xmax=1 identifica essa coordenada como 75%. Colocar a linha em 75 muda sua posição numérica; a formatação não pode corrigir essa diferença de coordenadas.

Questão 6 de 10

Uma tabela de percurso tem distâncias [4, 1, 3] km e elevações pareadas [90, 40, 75] m. Que ordem uma linha que avança deve usar?
  1. (1, 40), (3, 75), (4, 90)
  2. (1, 90), (3, 40), (4, 75)
  3. (1, 40), (4, 90), (3, 75)
  4. (4, 90), (1, 40), (3, 75)
Mostrar respostaOcultar resposta
Resposta: A
Ordene as observações por distância e mantenha cada elevação pareada com sua distância original. Isso fornece (1, 40), (3, 75) e (4, 90). Ordenar apenas a lista de distâncias associaria as elevações erradas às novas posições.

Questão 7 de 10

Medições ocorrem nos anos 2017, 2018 e 2022. Um gráfico categórico do seaborn as espaça igualmente. O que preserva os intervalos reais?
  1. sharey=True
  2. errorbar=None
  3. dodge=True
  4. native_scale=True
Mostrar respostaOcultar resposta
Resposta: D
A escala nativa preserva as coordenadas numéricas, então o intervalo de quatro anos de 2018 a 2022 é maior que o intervalo anterior de um ano. O deslocamento lateral separa grupos de hue dentro de uma categoria; ele não substitui posições categóricas pela escala numérica original.

Questão 8 de 10

Um gráfico com facetas tem dois níveis de linha e quatro níveis de coluna. Quantos painéis ele cria?
  1. 8
  2. 6
  3. 4
  4. 2
Mostrar respostaOcultar resposta
Resposta: A
Uma grade de facetas com linhas e colunas tem um painel para cada combinação de níveis, produzindo 2 × 4 = 8 painéis. Somar os números de níveis fornece seis, mas deixa combinações de fora: cada uma das duas linhas precisa das quatro colunas.

Questão 9 de 10

Uma região tem 9 viagens de trem e 3 a pé; outra tem 12 viagens de trem e 12 a pé. Você quer barras empilhadas de mesma altura para comparar a composição das viagens. Quais devem ser os segmentos de trem?
  1. 0,30 e 0,40
  2. 0,43 e 0,57
  3. 0,75 e 0,50
  4. 9,00 e 12,00
Mostrar respostaOcultar resposta
Resposta: C
Normalize dentro de cada região: a primeira proporção de viagens de trem é 9 de 12, ou 0,75, e a segunda é 12 de 24, ou 0,50. Dividir pelo total combinado da amostra compara as contribuições para todas as viagens, então as barras deixariam de somar um cada uma.

Questão 10 de 10

Um relatório precisa de um PNG de 900 × 600 pixels com uma legenda externa totalmente visível. A superfície de desenho planejada tem 6 × 4 polegadas. Qual plano controla melhor as dimensões e o corte?
  1. Usar 100 dpi, reservar espaço para a legenda na superfície e salvar sem corte ajustado ao conteúdo.
  2. Usar 150 dpi, reservar espaço para a legenda na superfície e salvar sem corte ajustado ao conteúdo.
  3. Usar 150 dpi, colocar a legenda fora da superfície e salvar sem corte ajustado ao conteúdo.
  4. Usar 150 dpi, colocar a legenda fora da superfície e forçar o corte ajustado para preservar seu tamanho.
Mostrar respostaOcultar resposta
Resposta: B
A 150 dpi, uma superfície de 6 × 4 polegadas fornece 900 × 600 pixels. Reserve parte dessa superfície para a legenda, fora da área de plotagem, mas dentro da figura, para que ela caiba sem corte. Limites ajustados ao conteúdo podem incluir uma legenda fora da superfície, mas também podem alterar as dimensões finais em pixels.
Conjunto 2: Interprete gráficos e verifique os fundamentos10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Com o Matplotlib como mecanismo padrão, o que df.plot(y="depth_mm") retorna ao desenhar um painel?
  1. Uma grade de facetas do seaborn
  2. Uma área de plotagem do Matplotlib
  3. Uma Series do pandas
  4. Uma figura do Matplotlib
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Para plt.subplots(2, 3), como você seleciona o painel inferior direito?
  1. axes[2, 3]
  2. axes[1, 3]
  3. axes[2, 1]
  4. axes[1, 2]
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Você quer o número de observações em cada categoria de equipamento. Qual gráfico do seaborn fornece isso diretamente?
  1. Um gráfico de contagem por categoria
  2. Um gráfico de pontos de valores médios
  3. Um gráfico de barras de médias
  4. Um diagrama de caixa de medições
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Um eixo y armazena proporções como frações. Qual configuração de formatador exibe 0,32 como “32%”?
  1. PercentFormatter(xmax=0.32)
  2. PercentFormatter(xmax=32)
  3. PercentFormatter(xmax=1)
  4. PercentFormatter(xmax=100)
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

O que descreve a faixa sombreada padrão ao redor de uma linha de médias do seaborn?
  1. A amplitude completa dos valores registrados
  2. A incerteza das médias estimadas
  3. A metade central de todas as observações
  4. Um desvio padrão de todas as observações
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

As leituras de sensores se repetem para cada par de estação e hora. Qual operação de tabela fornece uma média para cada par em uma tabela larga de estações por hora?
  1. pivot_table(..., aggfunc="mean")
  2. value_counts() nos nomes das estações
  3. melt(...) com identificadores das estações
  4. pivot(...) sem uma agregação
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Você quer painéis categóricos separados de diagramas de caixa com escalas y independentes. Qual é a configuração correta do seaborn no nível da figura?
  1. catplot(kind="box", col="site", facet_kws={"sharey": False})
  2. boxplot(col="site", sharey=False)
  3. catplot(kind="box", row="site", col_wrap=2)
  4. catplot(kind="box", col="site", sharey=False)
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Um gráfico de pontos por categoria usa hue para representar turnos, mas os dois turnos ocupam a mesma posição dentro de cada categoria. O que separa os grupos lado a lado?
  1. Defina native_scale=True.
  2. Defina jitter=False.
  3. Defina dodge=True.
  4. Defina errorbar=None.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Uma tabela dinâmica de médias tem valores de ponto flutuante como 26,0. Qual formato de mapa de calor exibe rótulos inteiros sem mudar o tipo de dados?
  1. fmt=".2f"
  2. fmt="d"
  3. fmt=".0f"
  4. fmt=".0g"
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

As leituras são 8, 12, 16 e 24 minutos. Um filtro remove leituras de pelo menos 20 minutos. Uma linha de média deve corresponder às linhas restantes, e uma nota com o tamanho da amostra deve permanecer no canto superior esquerdo do painel quando os limites mudarem. O que a figura atualizada deve usar?
  1. Uma linha de média em 15 e uma nota “n = 3” em coordenadas da área de plotagem.
  2. Uma linha de média em 12 e uma nota “n = 3” em coordenadas dos dados.
  3. Uma linha de média em 12 e uma nota “n = 4” em coordenadas da área de plotagem.
  4. Uma linha de média em 12 e uma nota “n = 3” em coordenadas da área de plotagem.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 3: Relacione tabelas, resumos e gráficos10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Um gráfico de linhas padrão do seaborn tem medições repetidas no mesmo x. O que a linha mostra nesse x?
  1. A soma dos valores de y
  2. A mediana dos valores de y
  3. O primeiro valor de y registrado
  4. A média dos valores de y
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

O que uma segunda chamada ax.plot(...) faz em uma área de plotagem existente?
  1. Substitui a linha antiga
  2. Cria uma segunda área de plotagem
  3. Adiciona outra série
  4. Apaga seus rótulos dos eixos
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Um notebook cria e armazena fig em uma célula. Uma célula posterior precisa salvar exatamente esse gráfico depois que o pyplot deixou de acompanhá-lo. Qual chamada é confiável?
  1. fig.savefig("chart.png")
  2. plt.savefig("chart.png")
  3. plt.show("chart.png")
  4. plt.figure().savefig("chart.png")
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Um gráfico empilhado tem um segmento de base de 28 e um segundo segmento de 17. Quais são a linha de base e o topo do segundo segmento?
  1. Base 0; topo 17
  2. Base 28; topo 45
  3. Base 28; topo 17
  4. Base 17; topo 45
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Uma função auxiliar chama plt.title("Depth") depois de criar uma segunda figura. O título deve pertencer à área de plotagem da primeira figura, armazenada como first_ax. Como o título deve ser definido?
  1. first_ax.title("Depth")
  2. first_ax.set_title("Depth")
  3. plt.figure().suptitle("Depth")
  4. plt.title("Depth") após a função auxiliar
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Um tempo de entrega está além do limite superior de um diagrama de caixa. O que você deve fazer antes de removê-lo?
  1. Excluí-lo porque o limite marca dados inválidos.
  2. Substituí-lo pela ponta do bigode superior.
  3. Investigar se o tempo registrado é válido.
  4. Manter apenas valores dentro da amplitude interquartil.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Uma seta deve apontar para (8, 42), com o texto 12 pontos acima. Quais devem ser xy e xytext com textcoords="offset points"?
  1. xy=(8, 42), xytext=(0, 12)
  2. xy=(8, 42), xytext=(8, 54)
  3. xy=(8, 54), xytext=(0, 12)
  4. xy=(0, 12), xytext=(8, 42)
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Dois grupos têm 40 e 200 observações. Um intervalo de cinco minutos contém 10 do primeiro grupo e 20 do segundo. Os histogramas devem ter área um cada. Quais devem ser as alturas de densidade desse intervalo e qual configuração de normalização é necessária?
  1. 0,25 e 0,10 por minuto; common_norm=False.
  2. 0,05 e 0,02 por minuto; common_norm=True.
  3. 0,01 e 0,02 por minuto; common_norm=True.
  4. 0,05 e 0,02 por minuto; common_norm=False.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Uma Series indexada pelos anos 2018, 2020 e 2024 é desenhada como barras do pandas. Uma linha que usa esses anos numéricos é adicionada à mesma área de plotagem. Como as duas séries podem se alinhar mantendo os rótulos dos anos?
  1. Converter apenas as alturas das barras em um array numérico antes de plotar.
  2. Plotar ambas nas posições 0, 1, 2 e identificar essas marcas com os anos.
  3. Ordenar ambas as séries por ano e manter suas coordenadas existentes.
  4. Definir limites y idênticos e manter suas coordenadas existentes.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Um PNG de 6 × 3 polegadas a 100 dpi usa rótulos de 12 pontos que parecem ter o tamanho correto em relação ao gráfico. Você precisa de 1200 × 600 pixels e manterá a fonte em 12 pontos. Qual tamanho de figura e resolução preservam as proporções dos rótulos?
  1. 6 × 3 polegadas a 200 dpi.
  2. 12 × 6 polegadas a 100 dpi.
  3. 6 × 3 polegadas a 100 dpi.
  4. 12 × 6 polegadas a 200 dpi.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 4: Diagnostique configurações e comparações de gráficos10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Uma figura tem três painéis de gráficos. Quantas áreas de plotagem ela contém?
  1. Três
  2. Uma
  3. Seis
  4. Duas
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Uma tabela contém uma linha por viagem e uma coluna mode. O que produz o número de viagens por meio de transporte?
  1. trips["mode"].sort_values()
  2. trips["mode"].unique()
  3. trips["mode"].value_counts()
  4. trips["mode"].drop_duplicates()
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Uma tabela longa tem height_cm, mass_kg e species. Como um gráfico de dispersão pode identificar espécies tanto pela cor quanto pela forma do marcador?
  1. Mapear espécie para size e y.
  2. Mapear espécie para hue e size.
  3. Mapear espécie para x e style.
  4. Mapear espécie para hue e style.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Um gráfico de linhas de meses usa nomes em texto que aparecem como “May”, “Mar”, “Apr”. Você precisa da ordem de calendário e de uma linha por local. Qual alteração é adequada?
  1. Passar a ordem dos meses a lineplot e mapear local para hue.
  2. Tornar mês uma categoria ordenada e mapear local para hue.
  3. Ordenar os nomes dos meses alfabeticamente e mapear local para hue.
  4. Mapear mês para hue e ordenar os nomes dos locais alfabeticamente.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Duas séries têm barras de largura 0,3 e devem ficar lado a lado, centralizadas juntas em x = 2. Onde devem ficar seus centros?
  1. 1,7 e 2,3
  2. 2,0 e 2,3
  3. 1,85 e 2,15
  4. 1,85 e 2,3
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Uma faceta tem altura de 4 polegadas e razão de aspecto 1,25. Qual é a largura desse painel?
  1. 5 polegadas
  2. 3,2 polegadas
  3. 4 polegadas
  4. 1,25 polegadas
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Duas amostras têm os mesmos quartis e pontas dos bigodes, mas agrupamentos diferentes de observações. Que representação pode revelar a diferença e por quê?
  1. Esconder pontos além dos bigodes para revelar os agrupamentos ausentes.
  2. Aumentar a largura das caixas para codificar os agrupamentos.
  3. Fixar os limites de y para tornar as caixas diferentes.
  4. Sobrepor gráficos de pontos por categoria para revelar valores individuais.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Um gráfico horizontal ordenado deve mostrar os valores 52, 31 e 19 de cima para baixo. Os pares originais de nome e valor são A–31, B–19, C–52. Qual preparação e configuração do eixo alcançam isso?
  1. Ordenar os pares de forma crescente, desenhá-los e inverter o eixo y.
  2. Ordenar os pares de forma decrescente, desenhá-los e inverter o eixo y.
  3. Ordenar os pares de forma decrescente, desenhá-los e inverter o eixo x.
  4. Ordenar os nomes de forma decrescente, manter os valores fixos e desenhá-los.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Dois intervalos adjacentes têm amplitudes 2 e 4 e contêm 10 observações cada em uma amostra de 50. Com escala de densidade, quais são suas alturas e áreas?
  1. Alturas 0,05 e 0,10; áreas 0,10 e 0,40
  2. Alturas 0,10 e 0,05; áreas 0,20 e 0,20
  3. Alturas 0,10 e 0,10; áreas 0,20 e 0,40
  4. Alturas 0,20 e 0,20; áreas 0,40 e 0,80
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Um relatório precisa das tendências de três locais em uma grade 2 × 2, comparáveis em milímetros. As linhas chegam com os meses fora de ordem. Qual construção evita linhas que voltam no tempo, alturas enganosas dos painéis e um painel vazio visível?
  1. Ordenar cada local por mês, compartilhar os limites de y e esconder a área de plotagem restante.
  2. Ordenar cada local por mês, compartilhar os limites de y e repetir um local na área de plotagem restante.
  3. Ordenar cada local por mês, ajustar cada eixo y e esconder a área de plotagem restante.
  4. Ordenar cada local por profundidade, compartilhar os limites de y e esconder a área de plotagem restante.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 5: Resolva problemas de plotagem e exportação10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Que tipo de função do seaborn pode desenhar em uma área de plotagem existente e escolhida do Matplotlib?
  1. Um construtor de PairGrid
  2. Uma função no nível da área de plotagem
  3. Uma função no nível da figura
  4. Um construtor de FacetGrid
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Em um eixo y logarítmico, um ponto se move de 3 para 30. Qual movimento tem a mesma distância vertical?
  1. De 30 para 300
  2. De 30 para 57
  3. De 30 para 130
  4. De 30 para 60
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Uma coluna de profundidade contém strings como “15 mm”, e o pandas a ignora ao criar o gráfico. Qual é a correção útil?
  1. Dar ao gráfico um rótulo que contenha o texto da unidade.
  2. Aumentar a largura da figura e girar os rótulos das marcas.
  3. Mudar o tipo de gráfico de linhas para barras horizontais.
  4. Remover o texto da unidade e converter os valores em números.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Uma amostra de 40 valores tem 12 observações em um intervalo de amplitude 6 minutos. Qual é a altura de densidade desse intervalo?
  1. 0,15 por minuto
  2. 2,00 por minuto
  3. 0,05 por minuto
  4. 0,30 por minuto
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Uma reta ajustada sobe no geral, mas os pontos sobem rapidamente no início e depois se estabilizam. O que deve orientar a próxima inspeção?
  1. Esconder os pontos e avaliar o ajuste apenas pela inclinação.
  2. Interpretar a faixa de confiança como contendo todas as observações possíveis.
  3. Tratar a reta como evidência de uma taxa constante em toda a extensão.
  4. Inspecionar a curvatura e comparar o ajuste linear com um ajuste curvo.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Um mapa de calor de correlação tem um coeficiente próximo de zero, mas o gráfico de dispersão correspondente mostra uma forma clara de U. Como você deve interpretar o par?
  1. Não há relação porque o coeficiente está próximo de zero.
  2. Há uma relação curva com associação linear fraca.
  3. Há uma relação linear positiva forte em toda a extensão.
  4. Há uma relação linear negativa forte em toda a extensão.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Três gráficos de estações usam limites automáticos de y separados. Uma mudança de 4 mm parece tão alta quanto uma mudança de 40 mm. Como você deve reconstruir a figura para comparar diretamente as grandezas?
  1. Usar limites de y compartilhados e manter os valores reais de cada estação.
  2. Manter limites separados e dar a todos os painéis a mesma altura.
  3. Normalizar cada estação pelo próprio máximo e compartilhar os limites de y.
  4. Manter limites separados e adicionar o mesmo título a cada painel.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Dois locais precisam de mapas de calor comparáveis por período. O local A tem contagens duplicadas 20 e 40 para um período; o local B tem 70 para esse período. Cada célula deve mostrar uma média com texto de número inteiro. Quais configurações de preparação e exibição mantêm comparáveis tanto os valores quanto as tonalidades?
  1. Agregar com soma, usar fmt=".0f" e igualar o mapa e os limites de cores.
  2. Agregar com média, usar fmt="d" e igualar o mapa e os limites de cores.
  3. Agregar com média, usar fmt=".0f" e igualar o mapa e os limites de cores.
  4. Agregar com média, usar fmt=".0f" e permitir limites automáticos separados.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Uma tabela registra cada dispositivo em vários momentos. Você precisa das trajetórias individuais dos dispositivos, coloridas por modelo, sem uma entrada separada na legenda para cada dispositivo. Como o gráfico de linhas deve ser configurado?
  1. Usar modelo para hue, omitir units e manter o estimador de média.
  2. Usar dispositivo para units, modelo para hue e estimator=None.
  3. Usar dispositivo para hue, modelo para units e o estimador de média.
  4. Usar dispositivo para style, modelo para hue e o estimador de média.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Um gráfico de dispersão deve mapear contagens da amostra à área do marcador e precipitação à cor. As contagens 20 e 80 devem fazer o segundo marcador ter o dobro da largura do primeiro, e os leitores precisam de uma escala numérica para a precipitação. Qual construção é adequada?
  1. Usar s=counts, c=rain_mm e uma barra de cores do resultado do gráfico de dispersão.
  2. Usar s=counts**2, c=rain_mm e uma barra de cores do resultado do gráfico de dispersão.
  3. Usar s=rain_mm, c=counts e uma barra de cores do resultado do gráfico de dispersão.
  4. Usar s=counts, c=rain_mm e uma legenda das duas contagens da amostra.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Travou em uma questão sua? Ajuda com Tarefas

Termos-Chave

78 Termos-Chave, cada um com sua definição

Á

Área de plotagem
Uma área de plotagem é uma região de uma figura do Matplotlib, com elementos gráficos, rótulos, limites e sistema de coordenadas próprios.
Selecione a área de plotagem correta antes de adicionar um título ao segundo painel de uma comparação de estações.
Área do marcador
A área do marcador é a grandeza de tamanho controlada pelo argumento s de scatter, medida em pontos tipográficos quadrados.
Dobrar a área do marcador aumenta sua largura em aproximadamente 1,4 vez, não duas vezes.

A

Acessor de gráficos plot
O acessor de gráficos plot do pandas fornece métodos de gráficos em uma Series ou DataFrame, usando o Matplotlib por padrão.
Use o acessor de gráficos em contagens agrupadas e depois personalize a área de plotagem retornada com um rótulo de unidade.
Agregação
A agregação combina várias linhas em um resumo, como média, soma ou contagem, para cada grupo definido.
A agregação por estação transforma linhas de precipitação diária em um valor médio de precipitação por estação.
Amplitude interquartil
A amplitude interquartil é Q3 menos Q1 e mede a dispersão da metade central de uma amostra numérica ordenada.
Se Q1 é 16 minutos e Q3 é 24 minutos, a amplitude interquartil é 8 minutos.
Anotação
Uma anotação é um texto associado a uma posição indicada, que pode usar uma seta e um rótulo posicionado separadamente.
Uma anotação pode nomear um pico enquanto coloca o texto ao lado dele para deixar o ponto visível.
Array de objetos Axes
Um array de objetos Axes é um array do NumPy de objetos de áreas de plotagem retornado quando o Matplotlib cria vários subgráficos.
Indexe o array de áreas de plotagem antes de desenhar; o próprio array não tem um método de plotagem.

B

Barra de cores
Uma barra de cores é uma escala numérica que mostra como os valores são associados a cores em um gráfico de dispersão, mapa de calor ou outra imagem.
Uma barra de cores de precipitação permite interpretar o gradiente em um gráfico de dispersão de temperatura e aluguéis.
Bigode
Um bigode se estende da caixa em direção à observação mais extrema dentro de seu limite, segundo a regra usual do diagrama de caixa.
Um limite superior de 36 minutos e um máximo dentro do limite de 33 colocam o bigode em 33 minutos.

C

Caixa delimitadora ajustada ao conteúdo
Uma caixa delimitadora ajustada ao conteúdo define os limites da exportação em torno dos elementos desenhados e da margem, podendo mudar as dimensões finais da imagem.
Uma caixa delimitadora ajustada ao conteúdo pode incluir uma legenda externa e remover margens não utilizadas.
Coluna numérica
Uma coluna numérica armazena valores como números que os métodos de plotagem podem usar para medições e resumos.
Uma coluna que contém strings como “18 mm” precisa ser limpa antes de se tornar uma coluna numérica.
Contêiner de barras
Um contêiner de barras é a coleção retornada por uma chamada de desenho de barras, contendo as barras que podem receber rótulos de valores posteriormente.
Guarde o contêiner de barras quando quiser adicionar rótulos a uma série em um gráfico agrupado.
Coordenadas da área de plotagem
As coordenadas da área de plotagem localizam um elemento por frações dessa área, de zero no canto inferior esquerdo a um no superior direito.
Uma nota de tamanho da amostra na posição (0,02; 0,95) da área de plotagem permanece perto do canto superior esquerdo do painel.
Coordenadas dos dados
As coordenadas dos dados localizam uma marca usando as unidades das variáveis plotadas, então sua posição na tela depende dos limites dos eixos.
Uma anotação em 20 minutos e 12 observações se move na tela quando os limites dos eixos mudam.

D

Densidade de probabilidade
A densidade de probabilidade ajusta as contagens pelo tamanho da amostra e pela amplitude do intervalo para que a área do histograma represente uma proporção das observações.
Uma densidade de 0,02 por minuto ao longo de um intervalo de dez minutos fornece uma proporção de 0,2.
Deslocamento lateral de grupos
O deslocamento lateral move grupos de hue para posições separadas dentro de cada categoria, permitindo comparar suas marcas lado a lado.
Ativar o deslocamento lateral separa os grupos de hue em um gráfico de pontos por categoria que, de outra forma, se sobreporiam.
Disposição com restrições
A disposição com restrições é um mecanismo de disposição do Matplotlib que ajusta o espaçamento dos painéis para criar espaço para rótulos e elementos decorativos.
A disposição com restrições ajuda a impedir que rótulos longos do eixo y colidam com o painel vizinho.

E

Eixo
Um eixo é o eixo de coordenadas x ou y de uma área de plotagem, incluindo suas marcas de graduação, seus rótulos e sua escala.
O eixo vertical de um gráfico de temperatura pode mostrar rótulos das marcas de graduação em graus Celsius.
Eixo compartilhado
Um eixo compartilhado vincula as escalas de coordenadas de vários painéis para que posições correspondentes representem os mesmos valores.
Um eixo y compartilhado faz uma altura de 80 mm ocupar a mesma posição em cada painel de estação.
Elemento gráfico
Um elemento gráfico é um objeto que o Matplotlib desenha, como uma linha, um rótulo de texto, uma coleção de marcadores ou um retângulo.
Adicionar uma linha de referência cria outro elemento gráfico na área de plotagem existente.
Escala logarítmica
Uma escala logarítmica atribui distâncias visuais iguais a razões iguais entre valores positivos, em vez de diferenças iguais.
Em uma escala logarítmica, de 2 a 20 ocupa a mesma distância que de 20 a 200.
Escala nativa
A escala nativa preserva o espaçamento numérico ou de datas real em um eixo categórico do seaborn, em vez de usar passos iguais entre categorias.
Com a escala nativa, os anos 2019 e 2023 ficam mais distantes que 2019 e 2020.
Estimador
Um estimador é a regra usada para resumir observações repetidas, como sua média, mediana ou soma.
Mudar o estimador de média para soma muda o que a altura de uma barra do seaborn representa.
Estimativa de densidade por núcleo
Uma estimativa de densidade por núcleo é uma estimativa suave da forma de uma distribuição, formada pela combinação de pequenas curvas em torno das observações.
Uma estimativa de densidade por núcleo pode se estender abaixo de zero mesmo quando todos os tempos medidos são positivos.

F

Faceta
Uma faceta é um painel que repete um gráfico para um subconjunto selecionado por uma variável de agrupamento.
Uma faceta para cada meio de transporte compara a mesma distribuição de tempos de deslocamento entre grupos.
Faixa de desvio padrão
Uma faixa de desvio padrão se estende por um número escolhido de desvios padrão em torno de um resumo para mostrar a dispersão dos dados.
Uma faixa de um desvio padrão responde a uma pergunta diferente de uma faixa de confiança para uma média.
Figura
Uma figura é toda a superfície de desenho do Matplotlib, que contém áreas de plotagem e elementos gerais, como um título para toda a figura.
Uma figura pode conter um gráfico de linhas de precipitação ao lado de um histograma de temperaturas diárias.
Folha de estilo
Uma folha de estilo é um conjunto nomeado de padrões do Matplotlib para configurações visuais como cores, grades, fontes e larguras de linhas.
Um contexto de estilo aplica uma folha de estilo durante um bloco sem alterar gráficos posteriores.
Formatador de rótulos das marcas de graduação
Um formatador de rótulos das marcas de graduação converte valores de coordenadas em rótulos exibidos sem alterar os dados numéricos subjacentes.
Um formatador de porcentagem pode exibir a fração 0,4 como “40%” em um gráfico de proporções.
Formato largo
O formato largo armazena séries separadas em colunas separadas, com identificadores de linha compartilhados entre essas séries.
Uma tabela larga com uma coluna por estação desenha uma linha do pandas por estação.
Formato longo
O formato longo armazena variáveis em colunas e observações em linhas, com uma coluna de grupo que identifica cada série.
Uma tabela longa pode mapear a coluna de estação para hue e a coluna de precipitação para a posição vertical.
Função de distribuição acumulada empírica
Uma função de distribuição acumulada empírica fornece a proporção de valores observados iguais ou inferiores a cada limite possível.
Um valor de ECDF de 0,8 em 40 minutos significa que 80% dos tempos registrados são de no máximo 40 minutos.
Função no nível da área de plotagem
Uma função no nível da área de plotagem desenha em uma área do Matplotlib, aceita uma área existente e retorna a área em que desenhou.
Um histograma do seaborn no nível da área de plotagem pode preencher o painel direito de uma figura personalizada do Matplotlib.
Função no nível da figura
Uma função no nível da figura cria sua própria figura ou grade e pode dividir os dados em painéis por meio de mapeamentos de linhas e colunas.
Um gráfico relacional no nível da figura pode dar a cada estação um painel com as mesmas escalas dos eixos.

G

Grade de facetas
Uma grade de facetas é um objeto do seaborn que contém uma figura e painéis específicos de grupos, com métodos para desenhar e adicionar rótulos.
Uma grade de facetas pode aplicar uma função de histograma separadamente às observações de cada estação.
Gráfico de barras agrupadas
Um gráfico de barras agrupadas coloca séries separadas lado a lado em torno da posição de cada categoria, permitindo comparar seus valores.
Deslocar os conjuntos de barras de duas estações em torno de cada mês impede a sobreposição das duas séries.
Gráfico de barras empilhadas
Um gráfico de barras empilhadas coloca séries sobre linhas de base acumuladas, de modo que cada barra mostre os componentes e um total.
Um segmento de 24 viagens sobre um segmento de 36 viagens produz uma barra empilhada com altura total 60.
Gráfico de contagem
Um gráfico de contagem exibe o número de linhas em cada categoria sem precisar de uma variável de resposta numérica separada.
Um gráfico de contagem por meio de transporte mostra quantas viagens registradas usaram cada tipo de transporte.
Gráfico de dispersão
Um gráfico de dispersão coloca marcadores separados em pares de valores numéricos para mostrar relações entre observações.
Cada marcador em um gráfico de dispersão pode representar a temperatura e os aluguéis de bicicletas de um dia.
Gráfico de enxame
Um gráfico de enxame desloca pontos individuais na direção da categoria para evitar sobreposição quando há espaço suficiente.
Um gráfico de enxame pode mostrar tempos repetidos separadamente em vez de escondê-los em uma única posição.
Gráfico de linhas
Um gráfico de linhas une observações na ordem em que são fornecidas, tornando visíveis mudanças ao longo de uma variável ordenada.
Ordenar distância e elevação juntas mantém a linha de um percurso avançando ao longo da trilha.
Gráfico de pontos por categoria
Um gráfico de pontos por categoria desenha observações individuais por categoria, geralmente com um pequeno deslocamento visual aleatório para reduzir a sobreposição exata.
Um gráfico de pontos por categoria sobre um diagrama de caixa mostra tempos de entrega individuais junto de seu resumo.
Gráfico de violino
Um gráfico de violino exibe uma estimativa de densidade espelhada para cada grupo, muitas vezes com um pequeno resumo desenhado em seu interior.
Um gráfico de violino pode revelar dois picos escondidos por um diagrama de caixa das mesmas observações.

H

Histograma
Um histograma agrupa medições numéricas em intervalos adjacentes e usa barras para mostrar suas contagens ou frequências escalonadas.
Um histograma com intervalos de cinco minutos agrupa tempos de deslocamento próximos no mesmo intervalo.

I

Imagem rasterizada
Uma imagem rasterizada armazena uma grade fixa de pixels, então ampliá-la pode fazer textos e linhas parecerem borrados.
Uma exportação PNG com pixels suficientes mantém os rótulos nítidos no tamanho de exibição pretendido.
Imagem vetorial
Uma imagem vetorial armazena formas e caminhos que podem ser redimensionados sem a pixelização de uma imagem rasterizada ampliada.
Um gráfico SVG mantém seus textos e linhas vetoriais nítidos quando redimensionado para um relatório.
Interface orientada a objetos
A interface orientada a objetos desenha e personaliza gráficos por meio de objetos de figura e área de plotagem nomeados e de seus métodos.
Manter uma referência a cada área de plotagem permite que uma função de plotagem identifique o painel desejado.
Intervalo de confiança
Um intervalo de confiança expressa a incerteza de uma grandeza estimada por meio de um método concebido para amostragens repetidas.
A faixa padrão de linha do seaborn é um intervalo de confiança de 95% para cada média estimada.

Í

Índice
Um índice identifica as linhas de um objeto do pandas e fornece coordenadas horizontais para seu gráfico de linhas padrão.
Um índice de datas permite que um gráfico de linhas de precipitação exiba datas sem uma coluna x separada.
Índice de datas e horas
Um índice de datas e horas é um índice do pandas formado por marcas temporais que os métodos de plotagem podem usar em um eixo horizontal de datas.
Reamostrar um índice de datas e horas para o início dos meses pode produzir um gráfico de médias mensais.

L

Largura de banda
A largura de banda controla a suavização de uma estimativa de densidade por núcleo; uma largura maior produz uma curva mais suave.
Aumentar a largura de banda pode unir duas pequenas elevações que apareciam em uma curva mais detalhada.
Limite de classe
Um limite de classe é uma fronteira de um intervalo do histograma que determina quais valores pertencem a esse intervalo.
Um valor em um limite de classe interno pertence ao intervalo que começa nesse ponto, não ao que termina nele.
Limite para detecção de valores atípicos
Um limite para detecção de valores atípicos é um ponto de corte calculado para sinalizar valores incomuns em um diagrama de caixa, geralmente a 1,5 IQR além de um quartil.
O limite superior pode ficar entre observações, então não precisa ser a ponta do bigode superior.
Limites da escala de cores
Os limites da escala de cores definem os extremos numéricos de um mapa de cores, fixando como os valores são associados às cores em um ou mais gráficos.
Igualar os limites da escala de cores faz uma tonalidade de azul representar o mesmo valor em dois mapas de calor.
Linha de base
Uma linha de base é o valor inicial a partir do qual uma barra se estende; barras comuns do Matplotlib começam em zero, a menos que isso seja alterado.
O segundo segmento de uma pilha usa o valor do primeiro como sua linha de base.
Linha de referência
Uma linha de referência marca um valor significativo de coordenada, como uma meta, média ou limite, em um gráfico.
Uma linha de referência vertical na mediana ajuda a comparar os dois lados de uma distribuição.

M

Mapa de calor
Um mapa de calor representa uma tabela numérica por meio de células coloridas, com rótulos de linhas e colunas que identificam a posição de cada célula.
Um mapa de calor por estação e mês pode revelar uma estação chuvosa como uma faixa de células mais escuras.
Mapa de cores divergente
Um mapa de cores divergente usa direções de cores diferentes em cada lado de um centro significativo, como zero.
Um mapa de cores divergente separa correlações negativas das positivas em torno de um centro neutro.
Mapa de cores sequencial
Um mapa de cores sequencial ordena cores de valores baixos a altos, tornando visíveis as grandezas em uma tabela numérica.
Um mapa de cores sequencial é adequado para contagens não negativas de visitantes, de períodos tranquilos a movimentados.
Mapeamento por cor
O mapeamento por cor é um mapeamento semântico do seaborn que representa uma variável por meio de cores e geralmente adiciona uma legenda correspondente.
Um hue categórico atribui cores distintas às estações, enquanto um hue numérico pode mostrar um gradiente de precipitação.
Mapeamento semântico
Um mapeamento semântico associa uma variável dos dados a uma característica visual, como posição, cor, estilo do marcador ou tamanho.
Mapear estação tanto para hue quanto para style distingue os mesmos grupos de duas formas visuais.
Marca de graduação
Uma marca de graduação é uma posição assinalada em um eixo de coordenadas; seu rótulo é o texto usado para descrever essa posição.
Números de meses podem ter marcas de graduação com os rótulos “Jan”, “Fev” e “Mar” sem mudar suas posições.
Matriz de correlação
Uma matriz de correlação é uma tabela simétrica de coeficientes de associação linear entre pares, com entradas definidas de −1 a 1.
Verifique gráficos de dispersão junto com uma matriz de correlação, pois padrões curvos fortes podem ter correlação baixa.
Matriz de gráficos de pares
Uma matriz de gráficos de pares é uma grade que compara pares de variáveis numéricas, com a distribuição de cada variável na diagonal.
Limitar uma matriz de gráficos de pares a três variáveis fornece nove painéis antes de remover os pares repetidos.
Mosaico de subgráficos
Um mosaico de subgráficos define uma disposição com nomes repetidos para painéis que ocupam várias células e retorna um dicionário de áreas de plotagem.
Um mosaico de subgráficos pode colocar um gráfico largo de tendência acima de dois gráficos menores de distribuição.

N

Normalização por linha
A normalização por linha divide cada entrada pelo total de sua linha para que a linha represente proporções que somam um.
A normalização por linha compara composições de meios de transporte entre regiões com números diferentes de viagens.

P

Pequenos múltiplos
Pequenos múltiplos repetem o mesmo tipo de gráfico para diferentes subconjuntos, geralmente usando escalas comuns para comparação.
Um painel de precipitação por estação permite comparar padrões sazonais sem linhas sobrepostas.
Ponto além dos bigodes
Um ponto além dos bigodes é uma observação desenhada além dos bigodes de um diagrama de caixa por ficar fora do limite definido pela regra escolhida.
Um atraso real no trânsito pode aparecer como ponto além dos bigodes e ainda pertencer a um conjunto de dados de tempo de entrega.
Pontos por polegada
Pontos por polegada é a medida que, em uma exportação rasterizada, converte as dimensões físicas de uma figura em dimensões de pixels.
Uma figura com 6 polegadas de largura salva a 200 dpi tem largura de 1200 pixels antes do corte ajustado ao conteúdo.

Q

Quartil
Um quartil é um limite que divide dados ordenados em quatro partes; Q1 e Q3 delimitam a metade central segundo o método escolhido.
Quartis interpolados podem diferir das medianas das metades da amostra calculadas manualmente em uma amostra pequena.
Quebra de colunas em novas linhas
A quebra de colunas em novas linhas limita o número de colunas de facetas e coloca os painéis restantes em linhas posteriores.
Uma quebra de colunas em três coloca sete painéis de estações em linhas com três, três e um.

R

Razão de aspecto
A razão de aspecto de uma faceta é sua largura dividida pela altura; multiplicar a altura pela razão de aspecto fornece a largura do painel.
Uma faceta com altura de 3 polegadas e razão de aspecto 1,5 tem largura de 4,5 polegadas.
Referência ao objeto Figure
Uma referência ao objeto Figure é uma variável Python que mantém um objeto de figura para edição ou salvamento posterior, mesmo depois que o pyplot deixa de acompanhá-lo.
Manter a referência à figura permite que uma célula posterior do notebook salve o gráfico original em vez de um vazio.
Remodelagem para formato largo
A remodelagem para formato largo reorganiza valores em linhas e colunas definidas por dois identificadores; cada par de identificadores deve ser único.
Leituras repetidas para uma estação e um mês exigem agregação antes de um pivot comum.
Remodelagem para formato longo
A remodelagem para formato longo transforma colunas de séries em uma coluna de nomes de variáveis e uma coluna de valores, mantendo os identificadores escolhidos.
Remodelar três colunas de estações para o formato longo cria um campo de estação que o seaborn pode usar para facetas.
Reta de regressão
Uma reta de regressão é uma linha ajustada que resume uma relação modelada entre variáveis numéricas em uma amostra.
Uma reta de regressão pode não captar um padrão curvo que permanece visível nos pontos.

S

Sobreposição excessiva de elementos gráficos
A sobreposição excessiva ocorre quando marcas se sobrepõem o suficiente para esconder observações ou dificultar a leitura de regiões densas.
Marcadores menores e parcialmente transparentes revelam agrupamentos escondidos pela sobreposição excessiva em uma amostra grande.

T

Tema
Um tema é uma coleção de padrões de plotagem para estilo, tamanho de texto e paleta que afeta os gráficos criados posteriormente.
Definir um tema do seaborn também muda a aparência de gráficos posteriores feitos apenas com Matplotlib.

Sobre esta aula

Por StudeliRelatar um erro

Crie seus próprios Materiais de Estudo

Transforme suas anotações, slides e documentos em Guias de Estudo, Questões de Prática, Flashcards e mais 6 ferramentas.

Começar