Seaborn - Figura Estética
Visualizar dados é uma etapa e tornar os dados visualizados mais agradáveis é outra etapa. A visualização desempenha um papel vital na comunicação de percepções quantitativas a um público para chamar sua atenção.
Estética significa um conjunto de princípios voltados para a natureza e a valorização da beleza, principalmente na arte. A visualização é uma arte de representar dados da maneira mais fácil e eficaz possível.
A biblioteca Matplotlib suporta altamente a personalização, mas saber quais configurações ajustar para obter um gráfico atraente e antecipado é o que se deve estar ciente para usá-lo. Ao contrário do Matplotlib, o Seaborn vem com temas personalizados e uma interface de alto nível para personalizar e controlar a aparência das figuras Matplotlib.
Exemplo
import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip = 1):
x = np.linspace(0, 14, 100)
for i in range(1, 5):
plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
sinplot()
plt.show()
É assim que um gráfico se parece com os padrões Matplotlib -
Para alterar o mesmo gráfico para os padrões Seaborn, use o set() função -
Exemplo
import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip = 1):
x = np.linspace(0, 14, 100)
for i in range(1, 5):
plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
import seaborn as sb
sb.set()
sinplot()
plt.show()
Resultado
As duas figuras acima mostram a diferença nos gráficos padrão de Matplotlib e Seaborn. A representação dos dados é a mesma, mas o estilo de representação varia em ambos.
Basicamente, o Seaborn divide os parâmetros Matplotlib em dois grupos−
- Estilos de plotagem
- Escala do gráfico
Estilos de bonecos marinhos
A interface para manipular os estilos é set_style(). Usando esta função você pode definir o tema do enredo. De acordo com a última versão atualizada, abaixo estão os cinco temas disponíveis.
- Darkgrid
- Whitegrid
- Dark
- White
- Ticks
Vamos tentar aplicar um tema da lista mencionada acima. O tema padrão do enredo serádarkgrid que vimos no exemplo anterior.
Exemplo
import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip=1):
x = np.linspace(0, 14, 100)
for i in range(1, 5):
plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
import seaborn as sb
sb.set_style("whitegrid")
sinplot()
plt.show()
Resultado
A diferença entre os dois gráficos acima é a cor de fundo
Removendo Espinhos de Machado
Nos temas branco e carrapato, podemos remover as espinhas do eixo superior e direito usando o despine() função.
Exemplo
import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip=1):
x = np.linspace(0, 14, 100)
for i in range(1, 5):
plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
import seaborn as sb
sb.set_style("white")
sinplot()
sb.despine()
plt.show()
Resultado
Nos gráficos regulares, usamos apenas os eixos esquerdo e inferior. Usando odespine() função, podemos evitar os spines dos eixos direito e superior desnecessários, que não são suportados no Matplotlib.
Substituindo os Elementos
Se você quiser personalizar os estilos Seaborn, você pode passar um dicionário de parâmetros para o set_style() função. Os parâmetros disponíveis são visualizados usandoaxes_style() função.
Exemplo
import seaborn as sb
print sb.axes_style
Resultado
{'axes.axisbelow' : False,
'axes.edgecolor' : 'white',
'axes.facecolor' : '#EAEAF2',
'axes.grid' : True,
'axes.labelcolor' : '.15',
'axes.linewidth' : 0.0,
'figure.facecolor' : 'white',
'font.family' : [u'sans-serif'],
'font.sans-serif' : [u'Arial', u'Liberation
Sans', u'Bitstream Vera Sans', u'sans-serif'],
'grid.color' : 'white',
'grid.linestyle' : u'-',
'image.cmap' : u'Greys',
'legend.frameon' : False,
'legend.numpoints' : 1,
'legend.scatterpoints': 1,
'lines.solid_capstyle': u'round',
'text.color' : '.15',
'xtick.color' : '.15',
'xtick.direction' : u'out',
'xtick.major.size' : 0.0,
'xtick.minor.size' : 0.0,
'ytick.color' : '.15',
'ytick.direction' : u'out',
'ytick.major.size' : 0.0,
'ytick.minor.size' : 0.0}
Alterar os valores de qualquer um dos parâmetros alterará o estilo do gráfico.
Exemplo
import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip=1):
x = np.linspace(0, 14, 100)
for i in range(1, 5):
plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
import seaborn as sb
sb.set_style("darkgrid", {'axes.axisbelow': False})
sinplot()
sb.despine()
plt.show()
Resultado
Dimensionando os Elementos do Plot
Também temos controle sobre os elementos do gráfico e podemos controlar a escala do gráfico usando o set_context()função. Temos quatro modelos predefinidos para contextos, com base no tamanho relativo, os contextos são nomeados da seguinte forma
- Paper
- Notebook
- Talk
- Poster
Por padrão, o contexto é definido como notebook; e foi usado nas parcelas acima.
Exemplo
import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip = 1):
x = np.linspace(0, 14, 100)
for i in range(1, 5):
plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
import seaborn as sb
sb.set_style("darkgrid", {'axes.axisbelow': False})
sinplot()
sb.despine()
plt.show()
Resultado
O tamanho de saída do gráfico real é maior quando comparado aos gráficos acima.
Note - Devido ao dimensionamento das imagens em nossa página da web, você pode perder a diferença real em nossos gráficos de exemplo.