将sympy和matplotlib图组合在一张图片中

时间:2018-05-25 16:26:58

标签: python matplotlib sympy

我需要构建一个由点数组设置的表达式图形和图形,并返回图像。要构建表达式图表,我使用sympy.plot,并在我使用matplotlib的点上构建图表。

以下是一个示例代码:

from os import remove
from matplotlib import pyplot as plt
from PIL import Image
from sympy import plot, symbols

def plot_graphic(x, y, expression, file_name):
    file = '{}.png'.format(file_name)
    x1, y1 = list(x), list(y)
    plt.plot(x1, y1)
    plt.savefig(file)
    plt.close()
    del y1
    img = Image.open(file)
    remove(file)
    yield img

    x = symbols('x')
    plot(expression.args[1], (x, x1[0], x1[-1]), show=False).save(file)
    img = Image.open(file)
    remove(file)
    yield img

x,y是发电机。如何将这些图像组合在一起?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。 Sympy有一种绘制点的方法。您需要创建一个List2DSeries对象来执行必要的操作,并使用append方法添加到其他图形中。结果代码如下所示。

from os import remove
from PIL import Image
from sympy import plot, symbols
from sympy.plotting.plot import List2DSeries

def plot_graphic(x, y, expression, file_name):
    file = '{}.png'.format(file_name)
    x1, y1 = list(x), list(y)
    x = symbols('x')
    graph = plot(expression.args[1], (x, x1[0], x1[-1]), show=False, line_color='r')
    graph.append(List2DSeries(x1, y1))
    graph.save(file)
    img = Image.open(file)
    remove(file)
    return img