2016-07-12 86 views
0

I already checked out this question, but it didn't solve my problem.如何從pyplot中提取數據圖

您好!我有一個pyplot數字:

def foo(data): fig,ax = plt。子圖(figsize =(20,10),dpi = 100)

xaxis = (list with x values) 
    yaxis = (numpy array with y values) 
    ax.plot(xaxis, yaxis) 

我想foo​​()返回x和y值。據我所知,我可以做

return xvalues, yvalues 

但我想從圖中提取數據。

我已經盡力閱讀pyplot文檔,但我仍然很新,所以如果我在做一些愚蠢的事情,請讓我知道!

編輯:我沒有足夠的描述性,對不起。我正在嘗試爲模塊編寫單元測試,其中一種方法是生成並保存一個圖形。 foo()不一定必須返回x和y數據,我只是希望它返回一些我可以用來確保它正確生成劇情的內容。我知道,matplotlib已經測試了內置的東西,但我將不得不重構很多代碼才能使它工作。

+3

沒有使用,你已經是非常愚蠢的數據,是的。如果你有'xvalues'和'yvalues',那麼*使用*他們。把這些數據放在其他地方,然後試圖從其他地方得到它,而不是放在首位,這簡直是愚蠢的。 –

+1

您當然錯過了解釋您的完整問題,否則您的問題沒有意義(如@Wayne所說:只是返回您的原始數據)。你沒有告訴我們什麼?我懷疑是一個XY問題:你試圖解決另一個問題,你試圖做的這個kludge是努力解決派生的問題。如果你將自己的真實情況告訴你,我們可以幫你做到這一點。 –

+0

從您的編輯中,我認爲您違反了測試原理之一,即將您的受測系統(SUT)與外部依賴關係隔離。你需要測試你的code_,而不是它與外部庫的交互,更不用說外部庫本身。 – heltonbiker

回答

2

我想下面的代碼,你想要做什麼簡單的線圖:

import numpy as np 
import matplotlib.pyplot as plt 

def foo(xaxis, yaxis): 
    fig, ax = plt. subplots(figsize=(20, 10), dpi=100) 
    curve = ax.plot(xaxis, yaxis) 
    # curve = [Line2D object] 
    return curve[0].get_xdata(), curve[0].get_ydata() 

x,y = foo(range(10), range(0,20,2)) 
print(x,y)