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.