Комбинируйте сюжеты sympy и matplotlib в одной картине - PullRequest
0 голосов
/ 25 мая 2018

Мне нужно построить граф выражений и граф, заданный массивом точек, и вернуть изображения.Для построения графа выражений я использую 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 голосов
/ 26 мая 2018

Я нашел решение.У 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...