微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Oct2Py 绘图功能没有响应,也无法更改工具包

如何解决Oct2Py 绘图功能没有响应,也无法更改工具包

使用Linux。如果我使用 gnuplot 工具包,我可以使用 plot3 八度函数而不会通过命令行冻结图形。但是,当使用 oct2py 模块从 python 运行它时,我似乎无法更改工具包,尽管它看起来可用,因此 plot3 图加载但立即冻结。

八度代码

%works fine
>graphics_toolkit('gnuplot');
>graphics_toolkit
ans=gnuplot
>plot3([2,1],[5,2],[10,12]) %test

python代码

>>>from oct2py import octave
>>>octave.availabe_graphics_toolkits()
Cell([['fltk','gnuplot']])

#try to change toolkit,doesnt seem to work
>>>octave.graphics_toolkit('gnuplot')
'fltk'
>>>octave.plot3([2,12]) #freezes upon loading
-23.804176753943704

解决方法

'fltk' 图像并未完全“冻结”。它只需要“可见”(如果还没有),并且可能“刷新”。请注意,保存也可以正常工作,即使它看起来已冻结。

例如这将使图片可用。

from oct2py import octave
octave.eval( " plot3([2,1],[5,2],[10,12])  " )
octave.eval( " set( gcf,'visible','on' ) " )
octave.eval( " refresh                     " )

请注意,您可能还必须通过八度以编程方式“关闭”图形,即:

octave.eval( " close all                     " )

否则只要适当刷新,fltk 应该可以正常工作。

但是,如果您坚持使用 gnuplot,理论上您可以将其明确指定为 plot_backend 命令中的 octave.eval 参数,例如

octave.eval( " plot3([2,12])  ",plot_backend="gnuplot" )

在实践中,正如您所指出的,我发现 oct2py 在从第一个图中重置工具包时遇到了一些麻烦。但是,出于某种原因,如果您打开一个图形并关闭它,那么从那时起后端将受到尊重。 IE。这对我有用:

from oct2py import octave
octave.eval( "figure" )
octave.eval( "close" )
octave.eval( "plot3([2,12])",plot_backend="gnuplot" )

我不知道为什么尝试从“内部”八度音程切换工具包不起作用;大概这与 oct2py 的内部不允许这样做有关。这可能解释了为什么 oct2py 的 eval 提供了一种更直接的方式来通过 python 参数进行选择。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。