一个用于使用matplotlib创建服务器端图表/图形的软件包;还提供了通过Django直接提供这些图表的示例。
项目描述
作为一名开发者,在您的网站/服务上显示数据图表和图形的需求,提供了两种主要的选择:服务器端或客户端/浏览器端。
服务器端图表生成的优势包括:在所有浏览器上显示的一致性(即使是IE也能处理显示图片),以及在浏览器之外重用图表图片,例如在生成PDF文档时。
客户端/浏览器端图表生成的优势包括:交互性(如果需要),或者更动态的行为,例如用户的新输入立即更新的图表。
如果您需要Python服务器端图表生成,webplotlib可以为您提供一个方便且模块化的软件包/API。它是GPL许可的。
安装
注意:尽管我为Django环境编写了此软件包,但它可以很容易地在Django之外使用。有关更多详细信息,请参阅下文。
webplotlib有以下直接依赖项
Numpy,matplotlib也依赖于它。您可以在全局范围内安装(例如,sudo pip install numpy)或仅对相关虚拟env安装。为了其全部功能,您需要安装系统依赖项(如Fortran),例如在Ubuntu上,需要安装libatlas-base-dev、gfortran、gcc、g++等软件包。
Matplotlib - 您可以通过操作系统包管理系统(可能太旧了)、PyPI或从源代码获取。最新版本1.0.1在PyPI上,但pip目前拉取了错误的版本(截至2011年5月;这不是pip的错误,请参阅这个Stack Overflow讨论),除非您执行以下操作:pip install -f http://downloads.sourceforge.net/project/matplotlib/matplotlib/matplotlib-1.0.1/matplotlib-1.0.1.tar.gz matplotlib。您也可以将其全局或本地安装到虚拟环境中。请注意,Matplotlib有多个系统依赖项,具体取决于使用情况:例如,在Ubuntu服务器上使用时,请安装以下软件包:python、python-dev、libpng12-dev、libfreetype6-dev。
py.test,如果您想运行单元测试。
在安装了依赖项(并在相关虚拟环境中)后,使用以下命令从PyPI安装webplotlib:
pip install webplotlib
或者您也可以通过GitHub从源代码安装。
用法
虽然我编写webplotlib是为了与Django项目一起使用,但目前没有直接依赖Django,因此您可以将webplotlib视为任何其他Python包并直接调用它。例如
from webplotlib.chart_builders import create_chart_as_png_str # When you have at least one sequence (list, tuple, iterable) # of data, you can plot it: chart_png_str = create_chart_as_png_str( 'timeseries', {'data': [[your_data_sequence]], 'names': 'MyDataLine'}, labels_dct={'title': 'TheBigBoard', 'x': 'Data', 'y': 'Value'}) # Save chart_png_str, etc.
更多使用示例可以在test_chart_builders.py模块中找到。
Django集成:我在网上找到了一些令人困惑和不一致的Matplotlib与Django集成的示例,因此我在自己的项目上做了一些实验。您可以在webplotlib的views.py文件中看到一些示例,它展示了如何直接以字符串形式服务/返回服务器端生成的PNG图表,这在您想快速修改图表样式时非常有用。
因此,要在Django中使用webplotlib,请更新您的Django项目settings.py中的INSTALLED_APPS以包含‘webplotlib’,并更新您的项目urls.py文件(目前models.py中没有内容)如下所示:
urlpatterns = patterns('', ... (r'^wpl/', include('webplotlib.urls')), ... )
此外,考虑使用我的应用程序django-metaimage与webplotlib一起使用,该应用程序可以轻松处理创建新图像并将其保存到有用的Django ORM模型实例/表示中。
测试
可以使用Tox或py.test运行基本单元测试。
历史 + 设计
webplotlib依赖于Matplotlib - 可用最强大和最受欢迎的Python图表包 - 用于实际的图表生成。但我在2011年春季发现,缺乏在Web环境中使用Matplotlib的良好抽象示例,以及使用其非交互式、面向对象、面向程序员的接口的示例(相比之下,有大量的示例用于交互式用户驱动的图表创建,模拟MATLAB)。因此,需要编写一个新应用程序,可以快速用于生成服务器端图表。
我需要一个方法,通过单个函数调用生成Matplotlib图表(最初是时间序列和条形图),然后返回原始图表数据/图像作为字符串 - 从那里可以轻松保存它、进一步处理它(例如添加水印)或通过HTTP返回它等。在研究了大量在线示例和文档、进行实验和重构后,出现了webplotlib。最初它支持时间序列和条形图,接受序列并返回美观的PNG图像字符串,您可以立即使用。还将有更多的抽象(例如分别定义图表模板)和改进,但这个版本现在可以使用。
替代方案:为什么不使用Flash库?它不是开源的,具有与JavaScript库相同的限制。为什么不使用JavaScript库?在查看了一堆客户端库(Grafico、Highcharts、flot、Google图表工具、dygraphs、Raphaël)之后,我认为Protovis是它——统治它们的工具。但是在理解他们的文档和示例之后,我发现显示不一致:简单的图表在Firefox 3/4中看起来很好,但在Chrome中没有刻度和标签,这是不可接受的。而且我甚至懒得看IE的渲染效果,那里可能更多痛苦。此外,我的需求也变了;我需要在报告中使用图表,因此图表作为图像在不同媒介上保持一致是必不可少的。所以服务器端生成是唯一的选择,而用Python,你会发现Matplotlib没有真正的竞争对手。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
webplotlib-0.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5c7c7c4c94d3f492ceaf21ca33443c4f1321a8867579bcd3274735ae2aa9aa1c |
|
MD5 | 5bf63416e77892150c1fe269a2e06e5a |
|
BLAKE2b-256 | 626afc6e8c87b0671ef0824b9256dff911b412b528b912d01e94d187fab39730 |
webplotlib-0.1-py2.6.egg的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0a16d980c42d89a63304bdadacf67cba4c54bf164a5ff65310a6c2d9aee5882c |
|
MD5 | 30257ccf78618ca8eb36fa19043c9156 |
|
BLAKE2b-256 | fd334fbe8319a17a436b2bbc0913f912300677cee88ac3f0ee3c8da2d517cbb4 |