Python中漂亮的图形和图表[关闭]


130

有哪些可用的库在Python应用程序中创建漂亮的图表和图形?


22
我不知道为什么这个关闭了。它不会引起大战或意见,并且有一组明确的答案:只有少数Python绘图库。
亚历克斯·B

7
为什么关闭?这是一个有用的问题。无论如何,我的建议是去pip search plot看看会发生什么。通过这样做,我发现了pygal,并且pygal看起来很棒。
Mark E. Haase 2012年

同样值得注意的是,这个问题出现在谷歌搜索“ charting python”的顶部–足以再次打开它的理由。
乔治·隆德2013年

这个问题很有用,不应关闭。其他选项包括bokehPyX
atomh33ls 2013年

Answers:


50

我是支持CairoPlot的人,对此感到非常自豪。matplotlib当然很棒,但是我相信CairoPlot会更好看。因此,对于演示文稿和网站,这是一个很好的选择。

今天,我发布了1.1版。如果有兴趣,请在CairoPlot v1.1中进行检查

编辑:经过漫长而寒冷的冬天后,CairoPlot再次被开发。在GitHub上检查新版本。


2
看起来不错,我想尝试一下。有计划为python 2.6制作Windows安装程序吗?
monkut

支持完全没有问题,我对此表示同意。感谢您的赞美:D
罗德里戈(Rodrigo)2009年

只需添加stackoverflow.com/questions/359727#520049就可以了,如果需要的话,可以拒绝投票。
VonC

1
Cairoplot确实不能很好地处理大量数据(如果我错了,请纠正我)。您不能在轴上添加标签以汇总hlabel或vlabel。无论如何,我看不到在图形上绘制多条线或对所使用的颜色有任何控制。我可以修改脚本...转到matplotlib ...
乔恩

每个人都应该忽略Jon的评论,它非常容易标记轴并定义所使用的颜色...请查看tests.py以获取示例。无论如何,感谢您提供的不错的lib。
Daniel Magnusson,2009年

38

对于交互工作,Matplotlib是成熟的标准。它提供了OO风格的API以及Matlab风格的交互式API。

Chaco是Enthought的人们提供的更现代的绘图库。它使用Enthought的Kiva矢量绘图库,目前仅在OpenGL的情况下可用于Wx和Qt(Matplotlib具有Tk,Qt,Wx,Cocoa的后端,以及许多图像类型,如PDF,EPS,PNG等)。Chaco的主要优点是其相对于Matplotlib的速度以及与Enthought的用于交互应用程序的Traits API的集成。


2
我同意所有API-matplotlib似乎确实是最成熟且功能最丰富的API(并且仍受支持并正在进一步开发)。只需转到其“画廊”以查看各种示例(带有相应的源代码):matplotlib.sourceforge.net/gallery.html。但是,我要说的是,它的API
Timur,

抱歉,我还要补充一点,就是matplotlib不仅是交互式的-您实际上可以将绘图/图表保存到文件中。对于前。PNG,PDF或SVG。
Timur'4

18

您也可以使用使用Google Chart API的pygooglechart。这不是您始终想要使用的东西,但是如果您想要少量的简单,良好的图表并且始终在线,尤其是如果您仍在浏览器中显示,则这是一个不错的选择。


7
提醒一下,Google允许您创建的图表尺寸非常有限(宽度*高度<= 300,000像素)。此外,即使是大小适中的数据集,Google图表(而非Python API)也会让您感到厌烦。否则,它们很棒。
Pat Notz

1
Google图片图表仍然可用,但已弃用。有关更多信息,请访问developers.google.com/chart/image/?hl=nl
ndequeker,2012年

15

您没有提到所需的输出格式,但是reportlab擅长以pdf和位图(例如png)格式创建图表。

这是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
如果出现异常“ Re​​nderPMError:setFont(Times-Roman)不能缺少T1文件吗?” (像我)在上面的代码中d.save -解决方案是下载并提取reportlab.org/ftp/fonts/pfbfer.zip在reportlabs / fornts目录
谢卡尔

+1是为了生成实际示例。
vmassuchetto 2011年

6

2
为什么好呢?你用过吗?
尼克,

是的,我在报表/统计信息工具中使用了dot_line_plot()。非常简单。请参阅Rodrigo关于Matplotlib和CairoPlot的最高答复。我也使用Matplotlib。实际上,我现在正在使用它。
Elmarco

奇怪的人没有抓住您的答案,但是目前票数最高的答案。
pihentagy 2012年

我认为,如果有一个最小的例子,这将获得更多支持。当链接断开时,您的答案将变得毫无用处。
Martin Thoma 2013年

谢谢,博客已经有很多信息了。作者本人稍后在此处回答了更多详细信息。
elmarco

6

我使用pychart,并认为它非常简单。

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

它全部是本机python,没有大量的依赖项。我确定matplotlib很可爱,但是我要下载和安装几天,我只想要一张measley条形图!

它似乎几年没有更新,但是嘿,它起作用了!




4

如果您想使用gnuplot进行绘图,则应考虑使用Gnuplot.py。它为gnuplot提供了一个面向对象的界面,还允许您将命令直接传递给gnuplot。不幸的是,它不再被积极开发。




3

我是PyOFC2的粉丝: http

它只是一个软件包,可轻松生成非常漂亮的Open Flash Charts 2所需的JSON数据。在上面的链接上查看示例。



0

您也可以考虑使用Google图表

从技术上讲,这不是python API,但是您可以从python中使用它,它的编码速度相当快,并且结果看起来不错。如果您碰巧正在在线使用地块,那么这将是一个更好的解决方案。


0

PLplot是用于创建科学图的跨平台软件包。它们不是很漂亮(引人注目),但看起来足够好。看一些例子(源代码和图片)。

PLplot核心库可用于创建标准的xy图,半对数图,对数对数图,轮廓图,3D表面图,网格图,条形图和饼图。它可以在Windows(2000,XP和Vista),Linux,Mac OS X和其他Unices上运行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.