Gráficos e tabelas bonitos em Python [fechado]

130

Quais são as bibliotecas disponíveis para criar gráficos e tabelas bonitas em um aplicativo Python?

sverrejoh
fonte
22
Não sei por que este foi fechado. Ele não convida guerras de chamas ou opiniões, e tem um conjunto de respostas claras: existem apenas algumas bibliotecas de plotagem Python.
12134 Alex B #
7
Por que isso está fechado? Esta é uma pergunta útil. De qualquer forma, minha recomendação é pip search plotver o que aparece. Descobri pygal fazendo isso, e pygal parece ótimo.
Mark E. Haase
Também vale a pena notar que esta pergunta aparece no topo de uma pesquisa no Google por "gráficos em python" - razão suficiente para abri-la novamente.
George Lund
Esta pergunta é útil, não deve ser fechada. Outras opções incluem bokeh e Pyx
atomh33ls

Respostas:

50

Sou eu quem apóia o CairoPlot e estou muito orgulhoso de ter surgido aqui. Certamente o matplotlib é ótimo, mas acredito que o CairoPlot é mais bonito. Portanto, para apresentações e sites, é uma ótima escolha.

Hoje eu lancei a versão 1.1. Se estiver interessado, confira em CairoPlot v1.1

EDIT: Após um inverno longo e frio, o CairoPlot está sendo desenvolvido novamente. Confira a nova versão no GitHub .

Rodrigo
fonte
2
Parece bom, eu gostaria de tentar. Algum plano para fazer um instalador do Windows para python 2.6?
monkut 22/10/08
Não há problema para o suporte, pois eu concordo. Obrigado pelo elogio: D
Rodrigo
Acabei de adicionar stackoverflow.com/questions/359727#520049 para que você diminua o voto, se desejar.
VonC 6/02/09
1
O Cairoplot realmente não funciona tão bem para grandes quantidades de dados (me corrija se eu estiver errado). Você não pode adicionar rótulos ao eixo para resumir os hlabels ou vlabels. De qualquer maneira, não consigo ver várias linhas em um gráfico ou ter controle sobre as cores usadas. Eu poderia cortar afastado no script ... movendo-se para matplotlib ...
Jon
Todos devem desconsiderar o comentário de Jon, é muito fácil rotular o eixo e definir as cores usadas ... Veja exemplos de tests.py. De qualquer forma, obrigado por uma boa lib.
Daniel Magnusson
38

Para um trabalho interativo, o Matplotlib é o padrão maduro. Ele fornece uma API no estilo OO, bem como uma API interativa no estilo Matlab.

Chaco é uma biblioteca de plotagem mais moderna do pessoal da Enthought. Ele usa a biblioteca de desenhos vetoriais Kiva da Enthought e atualmente trabalha apenas com Wx e Qt com OpenGL a caminho (o Matplotlib possui back-ends para Tk, Qt, Wx, Cocoa e muitos tipos de imagens, como PDF, EPS, PNG, etc.). As principais vantagens do Chaco são sua velocidade em relação ao Matplotlib e sua integração com a API Traits da Enthought para aplicativos interativos.

Barry Wark
fonte
2
Concordo que, de todas as APIs - o matplotlib parece ser o mais maduro e rico em recursos (e também ainda é suportado e está sendo desenvolvido). Basta ir à sua "galeria" para ver vários exemplos (com o código fonte correspondente): matplotlib.sourceforge.net/gallery.html . No entanto, eu diria que sua API é, bem ... complicada - os nomes dos métodos estão me deixando louco :) Falando sobre exemplos "complicados" e simples - esta postagem no blog me ajudou muito a começar com matplotlib: shreevatsa.wordpress .com / 2010/03/07 / matplotlib-tutorial
Timur
Desculpe, devo acrescentar também que o matplotlib não é apenas interativo - você pode realmente salvar plot / chart em um arquivo. Por ex. PNG, PDF ou SVG.
Timur
18

Você também pode usar pygooglechart , que usa a API do Google Chart . Isso não é algo que você sempre desejaria usar, mas se você deseja um pequeno número de gráficos bons, simples e sempre on-line, especialmente se estiver exibindo em um navegador de qualquer maneira, é uma boa escolha.

Tony Meyer
fonte
7
Uma palavra de aviso: os gráficos que o Google permite criar são bastante limitados em tamanho (largura * altura <= 300.000 pixels). Além disso, o Google Charts (não a API do Python) se engasga com conjuntos de dados de tamanho modesto. Caso contrário, eles são ótimos.
Pat Notz
1
O Google Image Charts ainda está disponível, mas foi descontinuado. Para obter mais informações, acesse developers.google.com/chart/image/?hl=nl
ndequeker
15

Você não mencionou o formato de saída que precisa, mas o reportlab é bom na criação de gráficos no formato pdf e bitmap (por exemplo, png).

Aqui está um exemplo simples de um gráfico de barras no formato png e pdf:

from reportlab.graphics.shapes import Drawing
from reportlab.graphics.charts.barcharts import VerticalBarChart

d = Drawing(300, 200)

chart = VerticalBarChart()
chart.width = 260
chart.height = 160
chart.x = 20
chart.y = 20
chart.data = [[1,2], [3,4]]
chart.categoryAxis.categoryNames = ['foo', 'bar']
chart.valueAxis.valueMin = 0

d.add(chart)
d.save(fnRoot='test', formats=['png', 'pdf'])

texto alternativo http://i40.tinypic.com/2j677tl.jpg

Nota: a imagem foi convertida em jpg pelo host da imagem.

serbaut
fonte
2
Se receber uma exceção "RenderPMError: Não é possível que o setFont (Times-Roman) esteja ausente nos arquivos T1?" (como eu tenho) em d.save no código acima - Solução é baixar e extrair reportlab.org/ftp/fonts/pfbfer.zip no diretório reportlabs / fornts
Shekhar
+1 pelo esforço de gerar um exemplo prático.
vmassuchetto
6

CairoPlot

elmarco
fonte
2
Por que isso é bom? Você já usou?
1011 Nick
Sim, usei dot_line_plot () nas ferramentas de relatórios / estatísticas. É bonito e fácil. Veja a principal resposta de Rodrigo sobre o Matplotlib e o CairoPlot. Eu também uso o Matplotlib. Na verdade, estou usando agora.
928 elmarco
Pessoas estranhas não captaram sua resposta, mas a resposta atualmente mais votada.
21812 pihentagy
Eu acho que isso seria mais positivo se houvesse um exemplo mínimo. Sua resposta será inútil quando o link estiver inoperante.
Martin Thoma
obrigado, o blog já tem muitas informações. e o próprio autor respondeu aqui com mais detalhes posteriormente.
Elmarco 08/04
6

Eu usei pychart e achei muito simples.

http://home.gna.org/pychart/

É tudo python nativo e não possui um barramento de dependências. Tenho certeza que o matplotlib é adorável, mas eu estaria baixando e instalando por dias e eu só quero um gráfico de barras measley!

Não parece ter sido atualizado em alguns anos, mas ei, funciona!

tullaman
fonte
4

Você já olhou para o ChartDirector for Python ?

Não posso falar sobre isso, mas usei o ChartDirector para PHP e é muito bom.

Thomas Owens
fonte
O ChartDirector funciona bem com o Python. Usei-o regularmente para produzir plotagens multilinhas.
Pwdyson
4

O NodeBox é incrível para a criação de gráficos brutos.

Mark Cidade
fonte
4

Se você gosta de usar o gnuplot para plotagem, considere o Gnuplot.py . Ele fornece uma interface orientada a objetos para o gnuplot e também permite que você passe comandos diretamente para o gnuplot. Infelizmente, ele não está mais sendo desenvolvido ativamente.

mhagger
fonte
3

Chaco do entusiasmo é outra opção

Azim
fonte
3

Sou fã do PyOFC2: http://btbytes.github.com/pyofc2/

É apenas um pacote que facilita a geração dos dados JSON necessários para o Open Flash Charts 2, que são muito bonitos. Confira os exemplos no link acima.

Gourneau
fonte
0

Você também pode considerar o Google charts .

Tecnicamente, não é uma API python, mas você pode usá-la a partir de python, é razoavelmente rápido de codificar e os resultados tendem a parecer bons. Se você estiver usando suas parcelas on-line, essa seria uma solução ainda melhor.

Tyler
fonte
0

PLplot é um pacote de software multiplataforma para a criação de gráficos científicos. Eles não são muito bonitos (atraentes), mas parecem bons o suficiente. Veja alguns exemplos (código fonte e imagens).

A biblioteca principal do PLplot pode ser usada para criar gráficos xy padrão, gráficos semi-log, gráficos log-log, gráficos de contorno, gráficos de superfície 3D, gráficos de malha, gráficos de barras e gráficos de pizza. É executado no Windows (2000, XP e Vista), Linux, Mac OS X e outros Unices.

Cristian Ciupitu
fonte