gpt4 book ai didi

matlab - 如何在 Octave 中绘制和显示正方形?

转载 作者:行者123 更新时间:2023-12-01 15:41:30 27 4
gpt4 key购买 nike

我无法在 Octave 中绘制正方形。我不能强制缩放轴,所以我得到一个矩形:

enter image description here

以下试验无效:

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)

可能我需要指定一个固定的窗口大小,同样缩放轴。我会很满意,当第一个这样的显示窗口会显示一个正确的正方形。一个奢侈的解决方案将使 window (或其内容)不可交互式调整大小。

备注:

  1. 我在 Windows XP 上安装了 Octave 3.2.4。
  2. Stackoverflow中的建议不起作用。

最佳答案

我认为这是 Gnuplot 的 windows 输出设备的问题。将其与 wxt 设备进行比较:

Gnuplot 4.4.3, 操作系统

# 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

gnuplot_wxWidgets_terminal gnuplot_Windows_terminal

注意,对于“win终端”,size影响图形大小,包括窗口标题栏和状态栏,而对于“wx终端”,它只设置内部绘图区域


Octave 3.4.2, WinXP

不幸的是,当我在 Octave 中尝试这个时,它仍然不是两种终端类型应有的样子。事实上,the problem是使用 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)(是的,我实际上拉了一个 virtual ruler 并测量了像素!)。最后调用refresh命令重绘:

octave_gnuplot_wx_resized octave_gnuplot_windows_resized

好消息是,一旦您正确设置了图形大小,axis equal 将适用于两种终端类型。

另一方面,新的 FLTK 后端在没有任何 hack 的情况下运行正常,因此您可能想切换到它:

# 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

octave_fltk


MATLAB

作为引用,这里是 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])

matlab

关于matlab - 如何在 Octave 中绘制和显示正方形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7370867/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com