繁体   English   中英

从Matplotlib进行绘图的标准ASCII文件格式

[英]Standard ASCII File Format For Plotting from Matplotlib

我正在做一个大型的硬件测试项目,遇到的一件事是我想在执行测试的系统上绘制来自Python脚本的数据,但它们不够坚固,无法进行测试。运行类似matplotlib的东西。 我开始定义一种格式,将数据传递回服务器,该服务器记录来自测试系统的所有数据。 但是,如果有的话,我宁愿使用现成的东西,以标准化的方式将图写入ASCII文件,然后再将其读回其他位置并进行打印。

我偏爱在matplotlib中进行绘图,但是我可以使用一些灵活性。 我定义自定义格式没有任何问题,如果matplotlib(或任何其他功能齐全的工具)可以通过某种文本格式即时构建绘图,我想使用某种标准格式。 在此先感谢您的帮助。

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

好的,您可以将python代码写入文件,然后将其发送到服务器以执行,但这可能会带来安全风险。

为了减轻某些安全风险(请注意XML漏洞 ),可以使用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

您可能会考虑使用Matlab的文本格式来传输数据。 Scipy有一组您可以使用的Matlab IO例程 您还可以通过以JSON格式转储数据或使用pickle的普通Python来完成此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM