matplotlib: отображать графики последовательно в веб-браузере при запуске ipython из командной строки - PullRequest
1 голос
/ 09 апреля 2019

В настоящее время я получаю 3 отдельных окна с pyplot ... которые я не хочу ... я хочу видеть все свои графики, последовательно перечисленные "inline" в одном окне веб-браузера, похожем на вывод jupyter, за исключением моегоскрипт, запускаемый из командной строки Windows как скрипт ipython ...

# File: plotit.ipy

# toy ipython plotting example
import numpy as np
import matplotlib.pyplot as plt 
%matplotlib

t = np.linspace(0, 10, 100)
y1 = 5*t
y2 = -0.5*t
y3 = 2*t**2

# display as 1st inline graph in "jupyter web browser window"
plt.figure()
plt.plot(t,y1)
plt.show()

# display as 2nd inline graph in "jupyter web browser window"
plt.figure()
plt.plot(t,y2)
plt.show()

# display as 3rd inline graph in "jupyter web browser window"
plt.figure()
plt.plot(t,y3, '.')
plt.show()

Вот как я запускаю его из командной строки, используя ActiveState Python 3.6:

C:\> ipython 
In [1]: %run testit.ipy
Using matplotlib backend: TkAgg    

Есть ли способпреобразовать документ Jupiter в сценарий ipython и запустить его из командной строки как один монолитный сценарий, но при этом графики matplotlib будут последовательно отображаться как «встроенные» в окне вывода jupyter, поскольку они отображаются при выполнении сценария.Пример:

Ответы [ 2 ]

1 голос
/ 09 апреля 2019

Я не знаю, возможно ли эмулировать ноутбук Jupyter, не запуская его.

Альтернативой может быть использование webagg бэкэнда.В этом случае только один вызов plt.show() ставится в конце, чтобы показать все три цифры на одной странице.

import numpy as np
import matplotlib
matplotlib.use("webagg")
import matplotlib.pyplot as plt 


t = np.linspace(0, 10, 100)
y1 = 5*t
y2 = -0.5*t
y3 = 2*t**2

# display as 1st inline graph in "jupyter web browser window"
plt.figure()
plt.plot(t,y1)

# display as 2nd inline graph in "jupyter web browser window"
plt.figure()
plt.plot(t,y2)

# display as 3rd inline graph in "jupyter web browser window"
plt.figure()
plt.plot(t,y3, '.')
plt.show()

При запуске этого браузера должно открыться окно с тремя цифрами

enter image description here

0 голосов
/ 09 апреля 2019

Сохраните все графики как файлы изображений без их отображения, затем напишите html-файл, чтобы отобразить все файлы изображений после запуска сценария python.

# File: plotit.ipy

# toy ipython plotting example
import numpy as np
import matplotlib.pyplot as plt 

t = np.linspace(0, 10, 100)
y1 = 5*t
y2 = -0.5*t
y3 = 2*t**2

# display as 1st inline graph in jupyter web browser window
fig = plt.figure()
plt.plot(t,y1)
fig.savefig("plot1.png")

# display as 2nd inline graph in jupyter web browser window
fig = plt.figure()
plt.plot(t,y2)
fig.savefig("plot2.png")

# display as 3rd inline graph in jupyter web browser window
fig = plt.figure()
plt.plot(t,y3)
fig.savefig("plot3.png")

html:

<!-- FILE: results.html -->
<html>
<body>
    <img src="plot1.png"/><br>
    <img src="plot2.png"/><br>
    <img src="plot3.png"/><br>
</body>
</html>

Другойhtml страница результатов:

<h1>Results</h1>

<table>

<tr>
<td><img src="plot1.png" style="max-width:100%"/></td>
<td><img src="plot2.png" style="max-width:100%"/></td>
</tr>

<tr>
<td><img src="plot3.png" style="max-width:100%"/></td>
<td><img src="plot1.png" style="max-width:100%"/></td>
</tr>

</table>
...