Na minha opinião, a apresentação do matplotlib é miserável. Veja bem, uso bastante o matplotlib, mais do que eu gostaria. A minha vida é miserável. Na tentativa de gerar uns gráficos descentes eu esbarrei com o seaborn. seaborn é uma biblioteca de visualização baseada no matplotlib que possui uma interface de mais alto nível que permite a criação de gráficos estatísticos mais bonitos. O matplotlib é altamente configurável, no entanto é difícil conseguir uma configuração que torne os gráficos atraentes, a menos que você tenha uma pós-graduação em artes plásticas. O seaborn já vem com alguns temas pré-definidos onde é possível configurar os eixos, a área de fundo, a paleta de cores e o tamanho do gráfico.

No gráfico abaixo temos um gráfico de pontos no matplotlib de cara limpa.

In [2]:
scatter(random.random(1000), random.random(1000));

O mesmo gráfico utilizando o modelo padrão do seaborn fica:

In [3]:
import seaborn as sn
scatter(random.random(1000), random.random(1000));

Note que apenas importamos o seaborn. Isso já é suficiente para ativar o tema padrão do seaborn, que na minha opinião é bem mais atraente. O tema padrão é o darkgrid que é semelhante ao ggplot2 do R. Ainda há mais 4 temas que vamos ver nos gráficos abaixo.

In [7]:
sn.set_context("talk")
with sn.axes_style("dark"):
    subplot(221)
    scatter(random.random(1000), random.random(1000), color=sn.color_palette()[0])
with sn.axes_style("whitegrid"):
    subplot(222)
    scatter(random.random(1000), random.random(1000), color=sn.color_palette()[1])
with sn.axes_style("ticks"):
    subplot(223)
    scatter(random.random(1000), random.random(1000), color=sn.color_palette()[2])
with sn.axes_style("white"):
    subplot(224)
    scatter(random.random(1000), random.random(1000), color=sn.color_palette()[3])

Existem outras bibliotecas que trabalham na definição de layout dos gráficos no matplotlib:

Algumas menos intrusivas como é o seaborn e outras mais como é o caso do prettyplotlib, que mesmo sendo sobre o matplotlib faz necessário o uso das suas funções para a criação de gráficos ao invés das funções do matplotlib.

Pudemos observar aqui que o seaborn permite a criação de gráficos de alto nível com um pequeno custo de configuração.