Jir*_*riz 2 matlab gnuplot octave
我无法在Octave中绘制一个正方形.我不能强制同等比例的轴,所以我得到一个矩形代替:

以下试验不起作用:
x = [0, 1, 1, 0, 0]';
y = [0, 0, 1, 1, 0];
plot(x, y), axis equal, axis([-1,2, -1,2])
% figure('Position', [10,10,100,100]); %[startx,starty,width,height]
% plot(x, y)
可能我需要指定一个固定的窗口大小和相同的缩放轴.当第一个这样的显示窗口显示正确的方格时,我会感到满意.奢侈的解决方案会使窗口(或其内容)不能以交互方式调整大小.
备注:
我相信这是Gnuplot windows输出设备的一个问题.将它与wxt设备进行比较:
# Gnuplot, wxWidgets terminal
set terminal wxt size 200,400
set size ratio -1        # set size square
plot x
# Gnuplot, Windows terminal
set terminal windows size 200,400
set size ratio -1        # set size square
plot x
 

请注意,对于"win terminal",大小会影响图形大小,包括窗口标题栏和状态栏,而对于"wx终端",它只会设置内部绘图区域
不幸的是,当我在Octave中尝试这个时,它仍然不适用于两种终端类型.事实上,问题是使用数字调整大小set(gcf,'position',[..])没有影响:
# Octave, backend=Gnuplot, terminal=wxt/windows
graphics_toolkit gnuplot     # backend gnuplot
setenv('GNUTERM','wx')       # wx/windows
figure, set(gcf,'position',[100 100 200 400])
plot(-10:10, -10:10, 'r'), legend('x')
axis([-10 10 -10 10])
axis equal                   # axis square
因此,我不得不使用鼠标手动调整图形大小到指定的大小(200,400)(是的,我实际上拉了一个虚拟标尺并测量了像素!).最后调用refresh命令重新编写:
 

好消息是,一旦你正确设置了数字大小,axis equal就适用于两种终端类型.
另一方面,新的FLTK后端行为正常,没有任何黑客攻击,所以你可能想切换到它:
# Octave, backend=FLTK
graphics_toolkit fltk        # backend fltk
figure, set(gcf,'position',[100 100 200 400])
plot(-10:10, -10:10, 'r'), legend('x')
axis([-10 10 -10 10])
axis equal

作为参考,这是MATLAB输出:
%# MATLAB
figure, set(gcf,'position',[100 100 200 400])
plot(-10:10, -10:10, 'r'), legend('x')
axis equal
axis([-10 10 -10 10])
