กราฟและแผนภูมิสวย ๆ ใน Python [ปิด]


130

มีไลบรารีใดบ้างสำหรับการสร้างแผนภูมิและกราฟสวย ๆ ในแอปพลิเคชัน Python


22
ฉันไม่แน่ใจว่าทำไมถึงปิด ไม่ได้เชิญชวนให้เกิดสงครามเปลวไฟหรือความคิดเห็นและมีชุดคำตอบที่ชัดเจน: มีไลบรารีพล็อต Python เพียงไม่กี่แห่ง
Alex B

7
ทำไมถึงปิด? นี่เป็นคำถามที่มีประโยชน์ อย่างไรก็ตามคำแนะนำของฉันคือการpip search plotดูสิ่งที่เกิดขึ้น ฉันค้นพบ pygal จากการทำสิ่งนี้และ pygal ก็ดูดีมาก
Mark E.Haase

นอกจากนี้ที่น่าสังเกตว่าคำถามนี้เกิดขึ้นจากการค้นหาของ Google ด้วยคำว่า "charting python" - มีเหตุผลเพียงพอที่จะเปิดอีกครั้ง
George Lund

คำถามนี้มีประโยชน์ไม่ควรปิด ตัวเลือกอื่น ๆ ได้แก่bokehและPyX
atomh33ls

คำตอบ:


50

ฉันเป็นคนหนึ่งที่สนับสนุน CairoPlot และฉันภูมิใจมากที่ได้มาที่นี่ แน่นอนว่า matplotlib นั้นยอดเยี่ยม แต่ฉันเชื่อว่า CairoPlot ดูดีกว่า ดังนั้นสำหรับการนำเสนอและเว็บไซต์จึงเป็นทางเลือกที่ดีมาก

วันนี้ฉันออกเวอร์ชัน 1.1 หากสนใจลองดูได้ที่CairoPlot v1.1

แก้ไข: หลังจากฤดูหนาวที่ยาวนานและหนาวเย็น CairoPlot กำลังได้รับการพัฒนาอีกครั้ง ตรวจสอบรุ่นใหม่บนGitHub


2
ดูดีฉันอยากลอง มีแผนจะสร้างตัวติดตั้ง windows สำหรับ python 2.6 หรือไม่?
กุฏ

ไม่มีปัญหาสำหรับการสนับสนุนอย่างที่ฉันเห็นด้วย ขอบคุณสำหรับคำชม: D
Rodrigo

เพิ่งเพิ่มstackoverflow.com/questions/359727#520049เพื่อให้คุณลงคะแนนถ้าคุณต้องการ
VonC

1
Cairoplot ใช้งานได้ไม่ดีกับข้อมูลจำนวนมากจริงๆ (แก้ไขฉันถ้าฉันผิด) คุณไม่สามารถเพิ่มป้ายกำกับให้กับแกนเพื่อสรุป hlabels หรือ vlabels ฉันไม่เห็นว่าจะพล็อตเส้นหลาย ๆ เส้นบนกราฟหรือควบคุมสีที่ใช้ ฉันสามารถแฮ็คได้ที่สคริปต์ ... ย้ายไปที่ matplotlib ...
จอน

ทุกคนไม่ควรสนใจความคิดเห็นของจอนมันง่ายมากที่จะติดป้ายแกนและกำหนดสีที่ใช้ ... ตรวจสอบ tests.py เพื่อดูตัวอย่าง ยังไงก็ตามขอบคุณสำหรับ lib ที่ดี
Daniel Magnusson

38

สำหรับการทำงานแบบโต้ตอบMatplotlibเป็นมาตรฐานสำหรับผู้ใหญ่ มี API แบบ OO รวมถึง API แบบโต้ตอบแบบ Matlab

Chacoเป็นไลบรารีการวางแผนที่ทันสมัยกว่าจากคนที่ Enthought มันใช้ไลบรารีการวาดภาพเวกเตอร์ Kiva ของ Enthought และปัจจุบันใช้งานได้เฉพาะกับ Wx และ Qt กับ OpenGL เท่านั้น (Matplotlib มีแบ็กเอนด์สำหรับ Tk, Qt, Wx, Cocoa และรูปภาพหลายประเภทเช่น PDF, EPS, PNG เป็นต้น) ข้อดีหลัก ๆ ของ Chaco คือความเร็วที่สัมพันธ์กับ Matplotlib และการผสานรวมกับ Traits API ของ Enthought สำหรับแอปพลิเคชันแบบโต้ตอบ


2
ฉันยอมรับว่าของ API ทั้งหมด - matplotlib ดูเหมือนจะเป็นผู้ใหญ่และมีคุณสมบัติครบถ้วนที่สุด (และยังได้รับการสนับสนุนและกำลังพัฒนาต่อไป) เพียงแค่ไปที่ "แกลลอรี่" ในการดูตัวอย่างต่างๆ (ที่มีตาม source code): matplotlib.sourceforge.net/gallery.html อย่างไรก็ตามฉันจะบอกว่า API ของมันนั้น ... ซับซ้อน - ชื่อเมธอดทำให้ฉันคลั่งไคล้ :) การพูดเกี่ยวกับ "ซับซ้อน" และตัวอย่างง่ายๆ - บล็อกโพสต์นี้ช่วยฉันได้มากในการเริ่มต้นด้วย matplotlib: shreevatsa.wordpress .com / 2010/03/07 / matplotlib-tutorial
Timur

ขออภัยฉันต้องเพิ่มด้วย matplotlib นั้นไม่เพียง แต่โต้ตอบเท่านั้นคุณสามารถบันทึกพล็อต / แผนภูมิลงในไฟล์ได้ สำหรับอดีต PNG, PDF หรือ SVG
Timur

18

นอกจากนี้คุณยังสามารถใช้pygooglechartซึ่งใช้แผนภูมิ API นี่ไม่ใช่สิ่งที่คุณต้องการใช้เสมอไป แต่ถ้าคุณต้องการแผนภูมิที่ดีเรียบง่ายจำนวนน้อยและออนไลน์อยู่ตลอดเวลาและโดยเฉพาะอย่างยิ่งหากคุณกำลังแสดงในเบราว์เซอร์อยู่แล้วก็เป็นทางเลือกที่ดี


7
คำเตือนแผนภูมิที่ Google อนุญาตให้คุณสร้างมีขนาดค่อนข้าง จำกัด (กว้าง * สูง <= 300,000 พิกเซล) นอกจากนี้ Google Charts (ไม่ใช่ Python API) จะกลืนไปกับชุดข้อมูลที่มีขนาดพอประมาณ มิฉะนั้นพวกเขาจะยอดเยี่ยม
Pat Notz

1
Google Image Charts ยังคงพร้อมใช้งาน แต่เลิกใช้แล้ว สำหรับข้อมูลเพิ่มเติมไปที่developers.google.com/chart/image/?hl=nl
ndequeker

15

คุณไม่ได้พูดถึงรูปแบบผลลัพธ์ที่คุณต้องการ แต่ reportlab สามารถสร้างแผนภูมิได้ดีทั้งในรูปแบบ pdf และ bitmap (เช่น png)

นี่คือตัวอย่างง่ายๆของ barchart ในรูปแบบ png และ 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'])

ข้อความแสดงแทน http://i40.tinypic.com/2j677tl.jpg

หมายเหตุ: รูปภาพถูกแปลงเป็น jpg โดยโฮสต์รูปภาพ


2
หากได้รับข้อยกเว้น "RenderPMError: ไม่สามารถ setFont (Times-Roman) ไม่มีไฟล์ T1 ได้หรือไม่" (เหมือนที่ฉันได้รับ) บน d.save ในโค้ดด้านบน - วิธีแก้ปัญหาคือดาวน์โหลดและแยกreportlab.org/ftp/fonts/pfbfer.zipในไดเร็กทอรี reportlabs / fornts
Shekhar

+1 สำหรับความพยายามในการสร้างตัวอย่างที่ใช้ได้จริง
vmassuchetto

6

2
ทำไมถึงดี? คุณเคยใช้หรือไม่?
นิค

ใช่ฉันใช้ dot_line_plot () ในเครื่องมือการรายงาน / สถิติ สวยและง่ายมาก ดูคำตอบยอดนิยมจาก Rodrigo เกี่ยวกับ Matplotlib และ CairoPlot ฉันยังใช้ Matplotlib อันที่จริงตอนนี้ฉันกำลังใช้มันอยู่
elmarco

คนแปลก ๆ ยังไม่เข้าใจคำตอบของคุณ แต่เป็นคำตอบที่ได้รับการโหวตสูงสุดในขณะนี้
pihentagy

ฉันคิดว่าสิ่งนี้จะได้รับคะแนนโหวตมากขึ้นหากมีตัวอย่างเล็กน้อย คำตอบของคุณจะไร้ประโยชน์เมื่อลิงก์ตาย
Martin Thoma

ขอบคุณบล็อกมีข้อมูลมากมายอยู่แล้ว และผู้เขียนเองก็ตอบที่นี่พร้อมรายละเอียดเพิ่มเติมในภายหลัง
elmarco

6

ฉันใช้ pychart และคิดว่าตรงไปตรงมามาก

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

มันเป็นงูหลามดั้งเดิมทั้งหมดและไม่มีบัสโหลดของการอ้างอิง ฉันแน่ใจว่า matplotlib นั้นน่ารัก แต่ฉันจะดาวน์โหลดและติดตั้งเป็นเวลาหลายวันแล้วและฉันต้องการแค่แผนภูมิแท่งแบบหัดเดียว!

ดูเหมือนว่าจะไม่ได้รับการอัปเดตในสองสามปีนี้ แต่เดี๋ยวก่อนมันใช้งานได้!


4

คุณได้ดูChartDirector สำหรับ Python แล้วหรือยัง?

ฉันไม่สามารถพูดเกี่ยวกับสิ่งนี้ได้ แต่ฉันเคยใช้ ChartDirector สำหรับ PHP และมันก็ค่อนข้างดี


ChartDirector ทำงานได้ดีกับ Python ฉันใช้มันเป็นประจำเพื่อสร้างแปลงหลายสาย
pwdyson


4

หากคุณต้องการใช้gnuplotสำหรับพล็อตที่คุณควรพิจารณาGnuplot.py มันมีอินเทอร์เฟซเชิงวัตถุให้กับ gnuplot และยังให้คุณส่งคำสั่งไปยัง gnuplot ได้โดยตรง น่าเสียดายที่ไม่มีการพัฒนาอย่างจริงจังอีกต่อไป




3

ฉันเป็นแฟนบน PyOFC2: http://btbytes.github.com/pyofc2/

มันเป็นเพียงแพ็คเกจที่ทำให้ง่ายต่อการสร้างข้อมูล JSON ที่จำเป็นสำหรับ Open Flash Charts 2 ซึ่งสวยงามมาก ดูตัวอย่างตามลิงค์ด้านบน



0

นอกจากนี้คุณยังสามารถพิจารณาแผนภูมิ Google

ในทางเทคนิคไม่ใช่ python API แต่คุณสามารถใช้จาก python มันเร็วพอสมควรในการเขียนโค้ดและผลลัพธ์มักจะดูดี หากคุณกำลังใช้แผนการของคุณทางออนไลน์นี่จะเป็นทางออกที่ดีกว่า


0

PLplotเป็นชุดซอฟต์แวร์ข้ามแพลตฟอร์มสำหรับการสร้างแผนการทางวิทยาศาสตร์ พวกเขาไม่ค่อยสวย (ดึงดูดสายตา) แต่ก็ดูดีพอ ดูตัวอย่าง (ทั้งซอร์สโค้ดและรูปภาพ)

ไลบรารีหลัก PLplot สามารถใช้เพื่อสร้างพล็อต xy มาตรฐานพล็อตกึ่งล็อกพล็อตล็อกพล็อตรูปร่างพล็อตพื้นผิว 3 มิติพล็อตตาข่ายแผนภูมิแท่งและแผนภูมิวงกลม ทำงานบน Windows (2000, XP และ Vista), Linux, Mac OS X และ Unices อื่น ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.