Grafik dan bagan cantik dalam Python [ditutup]

130

Apa perpustakaan yang tersedia untuk membuat grafik dan grafik cantik dalam aplikasi Python?

sverrejoh
sumber
22
Saya tidak yakin mengapa ini ditutup. Itu tidak mengundang perang api atau pendapat, dan memiliki satu set jawaban yang jelas: hanya ada beberapa perpustakaan yang merencanakan Python.
Alex B
7
Kenapa ini ditutup? Ini adalah pertanyaan yang bermanfaat. Bagaimanapun, rekomendasi saya adalah untuk pip search plotdan melihat apa yang muncul. Saya menemukan pygal dengan melakukan ini, dan pygal terlihat hebat.
Mark E. Haase
Juga patut dicatat bahwa pertanyaan ini muncul di bagian atas pencarian google untuk "charting python" - alasan yang cukup untuk membukanya lagi.
George Lund
Pertanyaan ini bermanfaat, tidak boleh ditutup. Pilihan lain termasuk bokeh dan PyX
atomh33ls

Jawaban:

50

Saya yang mendukung CairoPlot dan saya sangat bangga datang di sini. Tentunya matplotlib bagus, tapi saya percaya CairoPlot lebih tampan. Jadi, untuk presentasi dan situs web, itu adalah pilihan yang sangat bagus.

Hari ini saya merilis versi 1.1. Jika tertarik, periksa di CairoPlot v1.1

EDIT: Setelah musim dingin yang panjang dan dingin, CairoPlot sedang dikembangkan lagi. Lihat versi baru di GitHub .

Rodrigo
sumber
2
Terlihat bagus, saya ingin mencobanya. Adakah rencana untuk membuat installer windows untuk python 2.6?
monkut
Tidak ada masalah untuk dukungan, karena saya setuju. Terima kasih atas pujiannya: D
Rodrigo
Baru saja menambahkan stackoverflow.com/questions/359727#520049 untuk Anda unduh, jika Anda mau.
VonC
1
Cairoplot benar-benar tidak berfungsi dengan baik untuk sejumlah besar data (koreksi saya jika saya salah). Anda tidak dapat menambahkan label ke sumbu untuk meringkas hlabels atau vlabels. Lagi pula, saya tidak dapat melihat untuk memplot banyak garis pada grafik atau memiliki kendali atas warna yang digunakan. Aku bisa hack jauh di script ... pindah ke Matplotlib ...
Jon
Semua orang harus mengabaikan komentar Jon, sangat mudah untuk memberi label sumbu dan menentukan warna yang digunakan ... Periksa tests.py untuk contoh. Bagaimanapun, Terima kasih untuk lib yang bagus.
Daniel Magnusson
38

Untuk pekerjaan interaktif, Matplotlib adalah standar yang matang. Ini menyediakan API gaya OO serta API interaktif gaya Matlab.

Chaco adalah perpustakaan merencanakan yang lebih modern dari orang-orang di Enthought. Ini menggunakan perpustakaan menggambar vektor Enthought's Kiva dan saat ini hanya bekerja dengan Wx dan Qt dengan OpenGL di jalan (Matplotlib memiliki backend untuk Tk, Qt, Wx, Cocoa, dan banyak jenis gambar seperti PDF, EPS, PNG, dll.). Kelebihan utama Chaco adalah kecepatannya relatif terhadap Matplotlib dan integrasinya dengan Enthought's Traits API untuk aplikasi interaktif.

Barry Wark
sumber
2
Saya setuju bahwa dari semua API - matplotlib tampaknya memang yang paling matang dan kaya fitur (dan juga masih didukung dan sedang dikembangkan lebih lanjut). Cukup buka "galeri" untuk melihat berbagai contoh (dengan kode sumber sesuai): matplotlib.sourceforge.net/gallery.html . Namun, saya akan mengatakan bahwa API-nya, yah ..., rumit - nama metode membuat saya gila :) Berbicara tentang "rumit" dan contoh sederhana - posting blog ini banyak membantu saya untuk memulai dengan matplotlib: shreevatsa.wordpress .com / 2010/03/07 / matplotlib-tutorial
Timur
Maaf, saya harus menambahkan juga, bahwa matplotlib tidak hanya interaktif - Anda sebenarnya dapat menyimpan plot / bagan ke file. Misalnya PNG, PDF atau SVG.
Timur
18

Anda juga dapat menggunakan pygooglechart , yang menggunakan Google Chart API . Ini bukan sesuatu yang selalu ingin Anda gunakan, tetapi jika Anda ingin sejumlah kecil grafik yang bagus, sederhana, dan selalu online, dan terutama jika Anda tetap ditampilkan di browser, itu adalah pilihan yang baik.

Tony Meyer
sumber
7
Sebagai peringatan, grafik yang memungkinkan Google untuk Anda buat memiliki ukuran yang agak terbatas (lebar * tinggi <= 300.000 piksel). Juga, Google Charts (bukan API Python) akan tersedak bahkan dengan set data berukuran sedang. Kalau tidak, mereka hebat.
Pat Notz
1
Google Image Charts masih tersedia, tetapi sudah usang. Untuk info lebih lanjut, pergi ke developers.google.com/chart/image/?hl=nl
ndequeker
15

Anda tidak menyebutkan format output apa yang Anda butuhkan tetapi reportlab pandai membuat grafik baik dalam format pdf dan bitmap (misalnya png).

Berikut adalah contoh sederhana dari barchart dalam format png dan 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 teks http://i40.tinypic.com/2j677tl.jpg

Catatan: gambar telah dikonversi ke jpg oleh host gambar.

serbaut
sumber
2
Jika mendapatkan pengecualian "RenderPMError: Tidak dapat mengaturFont (Times-Roman) kehilangan file T1?" (Seperti yang saya dapatkan) pada d.save dalam kode di atas - Solusinya adalah mengunduh dan mengekstrak reportlab.org/ftp/fonts/pfbfer.zip dalam direktori reportlabs / fornts
Shekhar
+1 untuk upaya menghasilkan contoh praktis.
vmassuchetto
6

CairoPlot

elmarco
sumber
2
Kenapa itu bagus? Sudahkah Anda menggunakannya?
Nick
Ya, saya menggunakan dot_line_plot () dalam alat pelaporan / statistik. Ini cantik dan mudah. Lihat tanggapan atas dari Rodrigo tentang Matplotlib dan CairoPlot. Saya juga menggunakan Matplotlib. Bahkan, saya menggunakannya sekarang.
elmarco
Orang-orang aneh belum menangkap jawaban Anda, tetapi jawaban teratas saat ini terpilih.
pihentagy
Saya pikir ini akan mendapatkan lebih banyak upvotes jika ada contoh minimal. Jawaban Anda akan menjadi tidak berguna ketika tautannya mati.
Martin Thoma
terima kasih, blog sudah memiliki banyak informasi. dan penulis sendiri menjawab di sini dengan rincian lebih lanjut.
elmarco
6

Saya menggunakan pychart dan berpikir itu sangat mudah.

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

Ini semua python asli dan tidak memiliki busload dependensi. Saya yakin matplotlib bagus, tetapi saya akan mengunduh dan menginstal selama berhari-hari dan saya hanya ingin satu grafik batang measley!

Tampaknya tidak diperbarui dalam beberapa tahun tetapi hei itu berhasil!

tullaman
sumber
4

Sudahkah Anda melihat ke ChartDirector untuk Python ?

Saya tidak dapat berbicara tentang ini, tetapi saya telah menggunakan ChartDirector untuk PHP dan itu cukup bagus.

Thomas Owens
sumber
ChartDirector bekerja dengan baik dengan Python. Saya menggunakannya secara teratur untuk menghasilkan plot multiline.
pwdyson
4

NodeBox mengagumkan untuk pembuatan grafik mentah.

Mark Cidade
sumber
4

Jika Anda suka menggunakan gnuplot untuk memplot, Anda harus mempertimbangkan Gnuplot.py . Ini menyediakan antarmuka berorientasi objek ke gnuplot, dan juga memungkinkan Anda untuk mengirimkan perintah langsung ke gnuplot. Sayangnya, itu tidak lagi dikembangkan secara aktif.

mhagger
sumber
3

Chaco dari pemikiran adalah pilihan lain

Azim
sumber
3

Saya penggemar di PyOFC2: http://btbytes.github.com/pyofc2/

Itu hanya sebuah paket yang membuatnya mudah untuk menghasilkan data JSON yang dibutuhkan untuk Open Flash Charts 2, yang sangat indah. Lihatlah contoh-contoh pada tautan di atas.

Gourneau
sumber
0

Anda juga dapat mempertimbangkan grafik Google .

Secara teknis bukan API python, tetapi Anda dapat menggunakannya dari python, cukup cepat untuk kode, dan hasilnya cenderung terlihat bagus. Jika Anda menggunakan plot Anda secara online, maka ini akan menjadi solusi yang lebih baik.

Tyler
sumber
0

PLplot adalah paket perangkat lunak lintas-platform untuk membuat plot ilmiah. Mereka tidak cantik (eye catching), tetapi mereka terlihat cukup baik. Lihatlah beberapa contoh (baik kode sumber dan gambar).

Pustaka inti PLplot dapat digunakan untuk membuat plot xy standar, plot semi-log, plot log-log, plot kontur, plot permukaan 3D, plot mesh, diagram batang dan diagram lingkaran. Ini berjalan pada Windows (2000, XP dan Vista), Linux, Mac OS X, dan Unix lainnya.

Cristian Ciupitu
sumber