Matplotlib: como colorir um gráfico de dispersão por valor
Freqüentemente, você pode querer sombrear a cor dos pontos em um gráfico de dispersão matplotlib com base em uma terceira variável. Felizmente, isso é fácil de fazer usando a função matplotlib.pyplot.scatter() , que usa a seguinte sintaxe:
matplotlib.pyplot.scatter(x, y, s=Nenhum, c=Nenhum, cmap=Nenhum)
Ouro:
- x: Tabela de valores a serem utilizados para as posições do eixo x no gráfico.
- y: array de valores a serem usados para as posições do eixo y no gráfico.
- s: o tamanho do marcador.
- c: Tabela de valores a serem usados para cores de marcadores.
- cmap: Um mapa de cores para usar na plotagem.
Você pode usar c para especificar uma variável a ser usada para os valores de cores e pode usar cmap para especificar as cores reais a serem usadas para os marcadores na nuvem de pontos.
Este tutorial explica vários exemplos de uso prático desta função.
Exemplo 1: Pontos de dispersão coloridos por valor
Suponha que temos o seguinte DataFrame do pandas:
import pandas as pd #createDataFrame df = pd.DataFrame({'x': [25, 12, 15, 14, 19, 23, 25, 29], 'y': [5, 7, 7, 9, 12, 9, 9, 4], 'z': [3, 4, 4, 5, 7, 8, 8, 9]}) #view DataFrame df X Y Z 0 25 5 3 1 12 7 4 2 15 7 4 3 14 9 5 4 19 12 7 5 23 9 8 6 25 9 8 7 29 4 9
O código a seguir mostra como criar uma nuvem de pontos usando uma paleta de cores cinza e usando os valores da variável z como tonalidade da paleta de cores:
import matplotlib.pyplot as plt #create scatterplot plt. scatter (df.x, df.y, s=200, c=df.z, cmap=' gray ')
Para este exemplo específico, escolhemos a paleta de cores “cinza”, mas você pode encontrar uma lista completa de paletas de cores disponíveis para usar na documentação das paletas de cores matplotlib .
Por exemplo, poderíamos especificar “Verdes” como paleta de cores:
plt. scatter (df.x, df.y, s=200, c=df.z, cmap=' Greens ')
Por padrão, os marcadores com valores maiores para o argumento c são sombreados mais escuros, mas você pode reverter essa tendência simplesmente adicionando _r ao nome do cmap:
plt. scatter (df.x, df.y, s=200, c=df.z, cmap=' Greens_r ')
Exemplo 2: pontos coloridos do gráfico de dispersão por categoria
Suponha que temos o seguinte DataFrame do pandas:
import pandas as pd #createDataFrame df = pd.DataFrame({'x': [25, 12, 15, 14, 19, 23, 25, 29], 'y': [5, 7, 7, 9, 12, 9, 9, 4], 'z': ['A', 'A', 'B', 'B', 'B', 'C', 'C', 'C']}) #view DataFrame df X Y Z 0 25 5 A 1 12 7 A 2 15 7 B 3 14 9 B 4 19 12 B 5 23 9 C 6 25 9 C 7 29 4 C
O código a seguir mostra como criar um gráfico de dispersão usando a variável z para colorir os marcadores com base na categoria:
import matplotlib.pyplot as plt groups = df. groupby ('z') for name, group in groups: plt. plot (group.x, group.y, marker=' o ', linestyle='', markersize=12, label=name) plt. legend ()
Você pode encontrar mais tutoriais de Python aqui .