用于从Matplotlib绘图的标准ASCII文件格式

时间:2014-04-11 18:13:52

标签: python testing matplotlib plot

我正在开发一个大型硬件测试项目,我遇到的一个问题是,我想在进行测试的系统上绘制来自Python脚本的数据,但它们不是坚固到足以运行matplotlib之类的东西。我开始做的是定义一种格式,将数据传回服务器,记录来自测试系统的所有数据;但是,如果存在以标准化的方式将图形写入ASCII文件并将其读回到其他地方并进行绘图,我宁愿使用现成的东西。

我偏爱在matplotlib中绘图,但我对可以使用的内容有一些灵活性。我没有定义自定义格式的任何问题,如果matplotlib(或任何其他全功能工具)有一种方法可以从某种文本格式动态构建绘图,我只想使用标准的东西。在此先感谢您的帮助。

编辑:更具体地说,传输数据非常简单;我喜欢使用JSON。我正在寻找的是,建立一个不仅包含数据而且如何绘制数据的文件,(即脚本/应用程序加载它并从中构建一个图, file指定title / xlabel / ylabel,也许它需要一个图例等。)通过CSV或JSON写入数据并不难;它正在寻找一种以标准化的方式向主机发送绘图指令的方法。

2 个答案:

答案 0 :(得分:1)

好吧,您可以将python代码写入文件,并将其发送到服务器以执行,但这可能存在安全风险。

为了减轻一些安全风险(注意XML vulnerabilities),您可以使用xmlrpclib来限制可以从源计算机调用的函数集在服务器上运行:

例如,您可以在服务器上运行:

from SimpleXMLRPCServer import SimpleXMLRPCServer
import matplotlib.pyplot as plt

def plot(filename, x, y):
    plt.plot(x, y)
    plt.savefig(filename)    
    return True

server = SimpleXMLRPCServer(("localhost", 8000))
server.register_function(plot, 'plot')
server.serve_forever()

在源机器上:

import xmlrpclib
proxy = xmlrpclib.ServerProxy("http://localhost:8000/")

x = range(100)
y = [i**2 for i in x]
proxy.plot('/tmp/test.png', x, y)

您可以向plot函数添加更多参数来处理标题,图例等。

在源计算机上运行上面的代码将在服务器上生成文件/tmp/test.png

答案 1 :(得分:0)

您可以考虑使用Matlab的文本格式传输数据。 Scipy有一套你可以使用的Matlab IO routines。您也可以通过在JSON format中转储数据或使用pickle来使用纯Python执行此操作。