Jak programowo generować dane wyjściowe przeceny w notebookach Jupyter?

96

Chcę napisać raport z zajęć w notesie Jupyter. Chciałbym policzyć kilka rzeczy, wygenerować wyniki i uwzględnić je w przecenach. Czy mogę ustawić wynik komórki, który ma być interpretowany jako przecena?
Chciałbym takie polecenie: print '$\phi$'wygenerować symbol phi, tak jak w przecenach.
Innymi słowy, chciałbym mieć szablon wykonany w przecenie i wstawić wartości wygenerowane przez program zapisane w notesie. Ponowne obliczenie notesu powinno przynieść nowe wyniki i nowe przeceny z wstawionymi nowymi wartościami. Czy jest to możliwe w przypadku tego oprogramowania, czy też muszę samodzielnie zastąpić wartości?

fulaphex
źródło

Odpowiedzi:

140

Potrzebne funkcje znajdują się w module IPython.display .

from IPython.display import display, Markdown, Latex
display(Markdown('*some markdown* $\phi$'))
# If you particularly want to display maths, this is more direct:
display(Latex('\phi'))
Thomas K.
źródło
1
Wielkie dzięki, myślę, że to powinno mi znacznie pomóc. Jeśli mogę zapytać, czy istnieje sposób na ukrycie komórki za pomocą kodu? To znaczy, kiedy „kompiluję” komórkę przeceny, „kod” znika i widoczne są tylko skompilowane dane wyjściowe przeceny. Chciałbym móc to powtórzyć, ale z display_markdownfunkcją.
fulaphex
2
Niestety twój kod nie działa dla mnie, nie daje żadnych wyników.
fulaphex
1
Teraz to rzeczywiście działa, dzięki. Czy istnieje polecenie ukrycia komórki, abym mógł wygenerować tę przecenę i zachowałaby się jak normalna komórka przeceny?
fulaphex
2
Link w poprzednim komentarzu już nie działa, rozszerzenie można teraz znaleźć pod adresem: github.com/ipython-contrib/jupyter_contrib_nbextensions/tree/ ...
BioGeek
2
Dostaję obiekt, a nie odbitkę:<IPython.core.display.Markdown object>
loretoparisi
31

Zasadniczo prosisz o dwie różne rzeczy:

  1. Komórki Markdown wyświetlające wyniki kodu.

    Chciałbym policzyć kilka rzeczy, wygenerować wyniki i uwzględnić je w przecenach. […] Chciałbym mieć szablon w przecenie i wstawić wartości wygenerowane przez program do notesu

  2. Komórki kodowe generujące przeceny

    Chciałbym takie polecenie: print '$\phi$'wygenerować symbol phi, tak jak w przecenach.

Ponieważ 2. jest już objęta inną odpowiedzią (w zasadzie: użyj Latex()lub Markdown()zaimportuj z IPython.display), skupię się na pierwszej:


1. Szablon Markdown z wstawionymi zmiennymi

Dzięki rozszerzeniu Jupyter Python Markdown w rzeczywistości można zrobić dokładnie to, co opisujesz .

Instrukcje instalacji można znaleźć na stronie github nbextensions. Upewnij się, że włączysz rozszerzenie markdown języka Python za pomocą polecenia jupyter lub konfiguratora rozszerzeń .

Dzięki rozszerzeniu dostęp do zmiennych jest możliwy za pośrednictwem {{var-name}}. Przykład takiego szablonu przeceny mógłby wyglądać następująco:

Kod Pythona w komórkach Markdown

Zmienna a to {{a}}

Możesz także osadzić LateX: {{b}} tutaj!

Można osadzać nawet obrazy: {{i}}

Naturalnie wszystkie zmienne lub obrazy a, b, ipowinien być ustawiony w poprzednim kodzie. Oczywiście możesz także używać wyrażeń w stylu Markdown-Latex (takich jak $\phi$) bez polecenia print. Ten obraz pochodzi z wiki rozszerzenia, demonstrując możliwości.

przykład z wiki


Dalsze informacje na temat integracji tej funkcji z ipython / jupyter są omówione w śledzeniu problemów dla ipython i jupyter .

Miodowy
źródło
Czy to jest dostępne w Jupyter Lab?
BND
Nie używam tego, stąd nie mam doświadczenia. Jednak nie mogę znaleźć „Python Markdown” na liście rozszerzeń jupyter-lab: github.com/topics/jupyterlab-extension?q=&unscoped_q= - w związku z tym: może nie?
Honeybear