Python 如何从pyplot图形中提取数据

Python 如何从pyplot图形中提取数据,python,matplotlib,Python,Matplotlib,你好!!我有一个pyplot图: def foo(数据): 图,ax=plt。子批次(figsize=(20,10),dpi=100) 我希望foo()返回x和y值。我知道我能做到 return xvalues, yvalues 但我想从图中提取数据 我已经尽了最大努力阅读pyplot文档,但我对它还是相当陌生,所以如果我做了一些愚蠢的事情,请让我知道 编辑:对不起,我描述得不够详细。我正在尝试为一个模块编写一个单元测试,其中一个方法是生成并保存一个图。foo()不一定要返回x和y数据,我只希

你好!!我有一个pyplot图:

def foo(数据): 图,ax=plt。子批次(figsize=(20,10),dpi=100)

我希望foo()返回x和y值。我知道我能做到

return xvalues, yvalues
但我想从图中提取数据

我已经尽了最大努力阅读pyplot文档,但我对它还是相当陌生,所以如果我做了一些愚蠢的事情,请让我知道


编辑:对不起,我描述得不够详细。我正在尝试为一个模块编写一个单元测试,其中一个方法是生成并保存一个图。foo()不一定要返回x和y数据,我只希望它返回一些我可以用来确保它正确生成绘图的内容。我知道matplotlib内置了测试功能,但我必须重新构造大量代码才能使其正常工作。

我认为以下代码符合简单线图的要求:

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)

我认为以下代码符合简单线图的要求:

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)

不使用你已经拥有的数据是相当愚蠢的,是的。如果您有
xvalue
yvalue
,请使用它们。将数据放在其他地方,然后试图从其他地方而不是从你最初拥有的地方获取数据,这显然是愚蠢的。你肯定没有解释你的全部问题,否则你的问题就没有意义(正如@Wayne所说:只需返回你的原始数据)。你没告诉我们什么?我怀疑一个XY问题:你在试图解决另一个问题,而你试图做的这个乱七八糟的事情是为了解决一个衍生问题。如果您告诉as您真正想要什么,我们可以帮助您正确地完成。从您的编辑中,我认为您违反了测试原则之一,即将您的被测系统(SUT)与外部依赖隔离开来。你需要测试你的代码,而不是它与外部库的交互,更不用说外部库本身了。如果您有
xvalue
yvalue
,请使用它们。将数据放在其他地方,然后试图从其他地方而不是从你最初拥有的地方获取数据,这显然是愚蠢的。你肯定没有解释你的全部问题,否则你的问题就没有意义(正如@Wayne所说:只需返回你的原始数据)。你没告诉我们什么?我怀疑一个XY问题:你在试图解决另一个问题,而你试图做的这个乱七八糟的事情是为了解决一个衍生问题。如果您告诉as您真正想要什么,我们可以帮助您正确地完成。从您的编辑中,我认为您违反了测试原则之一,即将您的被测系统(SUT)与外部依赖隔离开来。您需要测试代码,而不是它与外部库的交互,更不用说外部库本身了。