Python Oct2Py绘图功能无响应,can';我也不会改变工具箱
使用Linux。如果使用gnuplot工具包,我可以使用plot3倍频程函数,而不会通过命令行冻结图形。然而,当从python运行它时,使用oct2py模块,我似乎无法更改工具箱,尽管它看起来可用,因此plot3图形加载但立即冻结 倍频程代码:Python Oct2Py绘图功能无响应,can';我也不会改变工具箱,python,octave,oct2py,Python,Octave,Oct2py,使用Linux。如果使用gnuplot工具包,我可以使用plot3倍频程函数,而不会通过命令行冻结图形。然而,当从python运行它时,使用oct2py模块,我似乎无法更改工具箱,尽管它看起来可用,因此plot3图形加载但立即冻结 倍频程代码: %works fine >graphics_toolkit('gnuplot'); >graphics_toolkit ans=gnuplot >plot3([2,1],[5,2],[10,12]) %test python代码: &
%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,1],[5,2],[10,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,理论上可以在octave.eval
命令中将其明确指定为plot\u backend
参数,例如
octave.eval( " plot3([2,1],[5,2],[10,12]) ", plot_backend="gnuplot" )
实际上,正如您所指出的,我发现oct2py在从第一个图中重置工具箱时有点麻烦。然而,出于某种原因,如果您打开一个图形并关闭它,从那时起后端将受到尊重。也就是说,这对我有效:
from oct2py import octave
octave.eval( "figure" )
octave.eval( "close" )
octave.eval( "plot3([2,1],[5,2],[10,12])", plot_backend="gnuplot" )
我不知道为什么试图从“内”八度音阶切换工具包是行不通的;想必这与oct2py的内部不允许这样做有关。这可能解释了为什么oct2py的eval提供了一种更直接的方式,通过python参数来选择它