Есть ли способ отображения графиков после plt.show () с помощью sphinx или сохранить область после .. plot :: - PullRequest
0 голосов
/ 26 марта 2020

Я использую sphinx с numpydocs, doctest и тему scipy.

При использовании .. plot:: в строке документации все графики создаются, за исключением того, что вместо того, чтобы показывать, где они вызываются, они все перемещаются в конец документации. Есть ли способ заставить его встроенным, без необходимости переписать пример в файл .rst? Вот как выглядит моя example.py строка документации:

.. plot::

    >>> import numpy as np
    >>> import matplotlib.pylab as plt

    # commentary breaking the block 
    Finished Imports

    >>> x = np.linspace(-np.pi*2, np.pi*2, 2000)
    >>> y = np.sin(x)
    >>> plt.plot(x, y)#doctest: +SKIP
    >>> plt.show()#doctest: +SKIP

First plot should be here

    >>> x2 = x
    >>> plt.plot(x2, y)#doctest: +SKIP
    >>> plt.show()#doctest: +SKIP

Second plot should be here

....

But both are here.

В качестве альтернативы я попытался добавить другой метод .. plot:: но это меняет сферу.

.. plot::

    >>> import numpy as np
    >>> import matplotlib.pylab as plt

    # commentary breaking the block 
    Finished Imports

    >>> x = np.linspace(-np.pi*2, np.pi*2, 2000)
    >>> y = np.sin(x)
    >>> plt.plot(x, y)#doctest: +SKIP
    >>> plt.show()#doctest: +SKIP

First plot should be here

.. plot::

    >>> x2 = x
    >>> plt.plot(x2, y)#doctest: +SKIP
    >>> plt.show()#doctest: +SKIP

Что при использовании make html будет указывать x не определено.

1 Ответ

0 голосов
/ 26 марта 2020

Были две проблемы, с которыми я столкнулся, и теперь они решены. Во-первых, я не отображал все обновления правильно, поэтому мне нужно каждый раз запускать make clean до make html.

Решение исходной проблемы заключается в добавлении :context: close-figs после .. plot:: каждый раз, когда вызывается plot.show().

.. plot::
    :context: close-figs

Итак, моя строка документации теперь выглядит так:

.. plot::
    :context: close-figs

    >>> import numpy as np
    >>> import matplotlib.pylab as plt

    # commentary breaking the block 
    Finished Imports

    >>> x = np.linspace(-np.pi*2, np.pi*2, 2000)
    >>> y = np.sin(x)
    >>> plt.plot(x, y)#doctest: +SKIP
    >>> plt.show()#doctest: +SKIP

.. plot::
    :context: close-figs

First plot shows here

    >>> x2 = x
    >>> plt.plot(x2, y)#doctest: +SKIP
    >>> plt.show()#doctest: +SKIP

.. plot::
    :context: close-figs

Second plot shows here
...