Сохранение выходных данных диаграммы Ганта Visu в файл .png - PullRequest
0 голосов
/ 06 августа 2020
import docplex.cp.utils_visu as visu

В коде документа ограничения программирования я смог показать диаграмму Ганта, используя visu. Я могу показать эту диаграмму, используя

Visu.show()

Мне нужно сохранить этот вывод как .png file. Я могу что-нибудь сделать.

Ответы [ 2 ]

0 голосов
/ 17 августа 2020

Окно, которое отображается при вызове visu.show (), содержит кнопку, позволяющую сохранить изображение как файл PNG. Преимущество состоит в том, что вы можете сначала изменить размер окна до подходящего размера для лучшего отображения. Сохранение изображения будет иметь необходимый размер. введите описание изображения здесь

0 голосов
/ 10 августа 2020

Если вы возьмете, например, пример publi c visu_flow_shop.py и замените строку

visu.show()

на

visu.show()
import matplotlib.pyplot as plt
plt.savefig('figure.png')

, вы получите график в указанном файле png.

В качестве альтернативы, если вам нужно делать это чаще, вы можете использовать ответ, который я предоставил здесь : Создайте диспетчер контекста, который временно перенаправляет plt.show() function:

import matplotlib.pyplot as plt
class Show:
    '''Simple context manager to temporarily reroute plt.show().

    This context manager temporarily reroutes the plt.show() function to
    plt.savefig() in order to save the figure to the file specified in the
    constructor rather than displaying it on the screen.'''
    def __init__(self, name):
        self._name = name
        self._orig = None
    def _save(self):
        plt.savefig(self._name)
        if False:
            # Here we could show the figure as well
            self._orig()
    def __enter__(self):
        self._orig = plt.show
        plt.show = lambda: self._save()
        return self
    def __exit__(self, type, value, traceback):
        if self._orig is not None:
            plt.show = self._orig
            self._orig = None

С этим вы можете сделать

with Show('figure.png'):
    visu.show()

, чтобы записать цифру в файл, а не отображать ее.

Лучшим вариантом будет возможно, отправить запрос на изменение в docplex и запросить функцию savefig() в классе / пакете visu.

...