簡體   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