2008-09-09 34 views
130

¿Cuáles son las bibliotecas disponibles para crear cuadros y gráficos bonitos en una aplicación de Python?Gráficos y tablas bonitas en Python

+22

No estoy seguro de por qué este se cerró. No invita a guerras de fuego u opiniones, y tiene un conjunto de respuestas claras: solo hay un puñado de bibliotecas de trazado de Python. –

+7

¿Por qué está cerrado? Esta es una pregunta útil. De todos modos, mi recomendación es 'pip search plot' y ver lo que aparece. Descubrí pygal al hacer esto, y pygal se ve muy bien. –

+0

También vale la pena señalar que esta pregunta aparece en la parte superior de una búsqueda de Google para "trazar un mapa de Python", razón suficiente para volver a abrirla. –

Respuesta

4

¿Has mirado en ChartDirector for Python?

No puedo hablar de esto, pero he usado ChartDirector para PHP y es bastante bueno.

+0

ChartDirector funciona bien con Python. Lo usé regularmente para producir parcelas de líneas múltiples. – pwdyson

4

NodeBox es increíble para la creación de gráficos en bruto.

6
+2

¿Por qué es bueno? ¿Lo has usado? – Nick

+0

Sí, utilicé dot_line_plot() en las herramientas de creación de informes/estadísticas. Es lindo y fácil. Vea la mejor respuesta de Rodrigo sobre Matplotlib y CairoPlot. También uso Matplotlib. De hecho, lo estoy usando ahora mismo. – elmarco

+0

Personas extrañas no han captado su respuesta, pero la respuesta actualmente mejor votado. – pihentagy

18

También puede utilizar pygooglechart, que utiliza el Google Chart API. Esto no es algo que siempre quisieras usar, pero si quieres un número pequeño de gráficos buenos y sencillos, y siempre estás en línea, y especialmente si lo muestras en un navegador de todos modos, es una buena opción.

+7

Una palabra de advertencia, los gráficos que Google le permite crear son bastante limitados en tamaño (ancho * alto <= 300,000 píxeles). Además, los Gráficos de Google (no la API de Python) se ahogarán incluso con conjuntos de datos de tamaño modesto. De lo contrario, son geniales. –

+1

Google Image Charts todavía están disponibles, pero desaprobados. Para obtener más información, vaya a https://developers.google.com/chart/image/?hl=nl – Voles

0

También podría considerar google charts.

No es técnicamente una API de Python, pero puede usarla desde python, es razonablemente rápida de codificar, y los resultados tienden a verse bien. Si usa sus parcelas en línea, esta sería una solución aún mejor.

50

Soy el que apoya CairoPlot y estoy muy orgulloso de que haya venido aquí. Seguramente matplotlib es genial, pero creo que CairoPlot es más atractivo. Por lo tanto, para presentaciones y sitios web, es una muy buena opción.

Hoy lancé la versión 1.1. Si está interesado, échele un vistazo al CairoPlot v1.1

EDIT: Después de un invierno largo y frío, CairoPlot se está desarrollando de nuevo. Vea la nueva versión en GitHub.

+2

Se ve bien, me gustaría probarlo. ¿Algún plan para hacer un instalador de Windows para Python 2.6? – monkut

+0

+1 para una gran lib, y gracias por su apoyo ayer (http://stackoverflow.com/questions/359727#516090) – VonC

+0

No hay problema para el soporte, ya que estoy de acuerdo.Gracias por el cumplido: D – Rodrigo

38

Para el trabajo interactivo, Matplotlib es el estándar maduro. Proporciona una API estilo OO y una API interactiva estilo Matlab.

Chaco es una biblioteca de trazado más moderna de la gente de Enthought. Utiliza la biblioteca de dibujo vectorial Kiva de Enthought y actualmente solo funciona con Wx y Qt con OpenGL en el camino (Matplotlib tiene backends para Tk, Qt, Wx, Cocoa y muchos tipos de imágenes como PDF, EPS, PNG, etc.). Las principales ventajas de Chaco son su velocidad con respecto a Matplotlib y su integración con la API de rasgos de Enthought para aplicaciones interactivas.

+2

Acepto que de todas las API, matplotlib parece ser de hecho la más madura y rica en características (y también sigue siendo compatible y se está desarrollando aún más). Simplemente vaya a su "galería" para ver varios ejemplos (con el código fuente correspondiente): http://matplotlib.sourceforge.net/gallery.html. Sin embargo, diría que su API es, bueno ..., complicada: los nombres de los métodos me están volviendo loco :) Hablando de ejemplos "complicados" y sencillos, esta publicación de blog me ayudó mucho para comenzar con matplotlib: http://shreevatsa.wordpress.com/2010/03/07/matplotlib-tutorial/ – Timur

+0

Lo siento, también tengo que añadir que matplotlib no es solo interactivo, sino que puedes guardar un gráfico/gráfico en un archivo. Por ej. PNG, PDF o SVG. – Timur

4

Si te gusta usar gnuplot para el trazado, se debe considerar Gnuplot.py. Proporciona una interfaz orientada a objetos para gnuplot, y también le permite pasar comandos directamente a gnuplot. Desafortunadamente, ya no se está desarrollando activamente.

0

PLplot es un paquete de software multiplataforma para la creación de parcelas científicas. No son muy bonitos (llamativos), pero se ven lo suficientemente buenos. Eche un vistazo a some examples (tanto el código fuente como las imágenes).

La biblioteca de núcleos PLplot se puede usar para crear diagramas x-y estándar, parcelas semilogarítmicas, parcelas log-log, diagramas de contorno, diagramas 3D, diagramas de malla, diagramas de barras y gráficos circulares.Se ejecuta en Windows (2000, XP y Vista), Linux, Mac OS X y otros Unices.

3

soy fan en PyOFC2: http://btbytes.github.com/pyofc2/

Simplemente sólo un paquete que hace que sea fácil de generar los datos JSON necesarios para las cartas abiertas Flash 2, que son muy bonito. Mira los ejemplos en el enlace de arriba.

15

No mencionó qué formato de salida necesita pero reportlab es bueno para crear gráficos tanto en formato pdf como de mapa de bits (por ejemplo, png).

Aquí es un simple ejemplo de un diagrama de barras en formato PNG y 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']) 

alt text http://i40.tinypic.com/2j677tl.jpg

Nota: la imagen se ha convertido al jpg por el anfitrión de la imagen.

+2

Si obtiene una excepción "RenderPMError: ¿No se puede configurar el FontFont (Times-Roman) con los archivos T1?" (como obtuve) en d.save en el código anterior - La solución es descargar y extraer http://www.reportlab.org/ftp/fonts/pfbfer.zip en el directorio reportlabs/fornts – Shekhar

+0

+1 para el esfuerzo de generando un ejemplo práctico. – vmassuchetto

+0

¡Guau, gracias por esta publicación! – spitzanator

6

Utilicé pychart y pensé que era muy sencillo.

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

Todo es nativa de Python y no tiene un autobús lleno de dependencias. Estoy seguro de que matplotlib es adorable, pero estaría descargando e instalando por días y solo quiero un gráfico de barras.

Parece que no se ha actualizado en unos pocos años, pero bueno, ¡funciona!

Cuestiones relacionadas