如何在 Jupyter Notebook 中嵌入 OpenMDAO N2 图
How to embed an OpenMDAO N2 diagram in Jupyter notebook
我正在尝试使用以下代码将 openMdao 生成的 N2 digaram 嵌入到 Jupyter notebook 中:
from openmdao.api import Problem
from openmdao.examples.beam_tutorial import BeamTutorial
from openmdao.api import view_model
from IPython.core.display import display, HTML
top = Problem()
top.root = BeamTutorial()
top.setup(check=False)
view_model(top, embed=True, show_browser=False,
outfile='partition_tree_n2.html')
display(HTML(filename='partition_tree_n2.html'))
这会正确显示图表的工具栏但没有图表,并且还会给出错误:
Javascript error adding output!
SyntaxError: Unexpected token >
See your browser Javascript console for more details.
Javascript 控制台上的错误是:
SyntaxError: Unexpected token >
at eval (<anonymous>)
at Function.globalEval (jquery.min.js:4)
at init.domManip (jquery.min.js:5)
at init.append (jquery.min.js:5)
at OutputArea._safe_append (outputarea.js:440)
at OutputArea.append_display_data (outputarea.js:638)
at OutputArea.append_output (outputarea.js:330)
at OutputArea.handle_output (outputarea.js:243)
at output (codecell.js:365)
at Kernel._handle_output_message (kernel.js:1196))
如何解决这个问题或将 OpenMDAO N2 图表嵌入 Jupyter Notebook?
经过更多研究,我认为这是因为 html 包含 HTML 中不允许的 javascript,一种可能的解决方案是使用 IFrame,如下所示:
from openmdao.api import Problem
from openmdao.examples.beam_tutorial import BeamTutorial
from openmdao.api import view_model
from IPython.core.display import display, HTML
from IPython.display import IFrame
top = Problem()
top.root = BeamTutorial()
top.setup(check=False)
view_model(top, embed=True, show_browser=False, outfile='partition_tree_n2.html')
display(IFrame(src='partition_tree_n2.html',width=1300,height=700))
如果有人想提出更好的答案,以编程方式设置宽度和高度仍然很好。
我正在尝试使用以下代码将 openMdao 生成的 N2 digaram 嵌入到 Jupyter notebook 中:
from openmdao.api import Problem
from openmdao.examples.beam_tutorial import BeamTutorial
from openmdao.api import view_model
from IPython.core.display import display, HTML
top = Problem()
top.root = BeamTutorial()
top.setup(check=False)
view_model(top, embed=True, show_browser=False,
outfile='partition_tree_n2.html')
display(HTML(filename='partition_tree_n2.html'))
这会正确显示图表的工具栏但没有图表,并且还会给出错误:
Javascript error adding output!
SyntaxError: Unexpected token >
See your browser Javascript console for more details.
Javascript 控制台上的错误是:
SyntaxError: Unexpected token >
at eval (<anonymous>)
at Function.globalEval (jquery.min.js:4)
at init.domManip (jquery.min.js:5)
at init.append (jquery.min.js:5)
at OutputArea._safe_append (outputarea.js:440)
at OutputArea.append_display_data (outputarea.js:638)
at OutputArea.append_output (outputarea.js:330)
at OutputArea.handle_output (outputarea.js:243)
at output (codecell.js:365)
at Kernel._handle_output_message (kernel.js:1196))
如何解决这个问题或将 OpenMDAO N2 图表嵌入 Jupyter Notebook?
经过更多研究,我认为这是因为 html 包含 HTML 中不允许的 javascript,一种可能的解决方案是使用 IFrame,如下所示:
from openmdao.api import Problem
from openmdao.examples.beam_tutorial import BeamTutorial
from openmdao.api import view_model
from IPython.core.display import display, HTML
from IPython.display import IFrame
top = Problem()
top.root = BeamTutorial()
top.setup(check=False)
view_model(top, embed=True, show_browser=False, outfile='partition_tree_n2.html')
display(IFrame(src='partition_tree_n2.html',width=1300,height=700))
如果有人想提出更好的答案,以编程方式设置宽度和高度仍然很好。