2016-07-12 49 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)