Gnuplot按角度拉伸椭圆选项

Gnuplot按角度拉伸椭圆选项,gnuplot,angle,ellipse,Gnuplot,Angle,Ellipse,我想用gnuplot画一个椭圆。它应该稍微倾斜,因此我使用角度选项。 但角度会影响椭圆的大小。我在文件里有什么不对劲吗 请参见以下示例: set output "test.pdf" set obj ellipse center 5,0.5 size 4,0.2 angle 20 set xrange [0:10] plot sin(x) 添加的两个png显示我的结果。我使用版本5.2.8。 编辑:伊桑的解决方案肯定是一条可行之路。 请记住,如果没有设置大小比-1,则线(如绘

我想用gnuplot画一个椭圆。它应该稍微倾斜,因此我使用角度选项。 但角度会影响椭圆的大小。我在文件里有什么不对劲吗

请参见以下示例:

set output "test.pdf"
set obj ellipse center 5,0.5 size 4,0.2 angle 20
set xrange [0:10]
plot sin(x)
添加的两个png显示我的结果。我使用版本5.2.8。

编辑:伊桑的解决方案肯定是一条可行之路。 请记住,如果没有
设置大小比-1
,则线(如
绘图x
)不会与x轴成45°角

最简单的解决方案可能是
设置尺寸比-1
以使x轴和y轴具有相同的比例。如果您需要不同的规模,应该有不同的解决方案

set terminal pdf size 10cm,10cm

set xrange [0:10]

# dummy plotting
set output "dummy.pdf"
plot sin(x)

factor =  real(GPVAL_X_MAX - GPVAL_X_MIN)/real(GPVAL_Y_MAX-GPVAL_Y_MIN) \
        * real(GPVAL_TERM_YMAX - GPVAL_TERM_YMIN)/real(GPVAL_TERM_XMAX - GPVAL_TERM_XMIN)

# real plotting
set output "test.pdf"
set obj ellipse center 5,0.5 size 4,factor*0.2 angle 20 unit xx
replot
代码:

### draw tilted ellipse with same proportions
reset session

set size ratio -1
set obj 1 ellipse center 5,0.5 size 4,0.2 angle 0  fc "red"
set obj 2 ellipse center 5,0.5 size 4,0.2 angle 20 fc "green"
set obj 3 ellipse center 5,0.5 size 4,0.2 angle 45 fc "blue"
set obj 5 ellipse center 5,0.5 size 4,0.2 angle 90 fc "magenta"

set xrange [0:10]
set yrange [-3:3]
plot sin(x)
### end of code
结果:

### draw tilted ellipse with same proportions
reset session

set size ratio -1
set obj 1 ellipse center 5,0.5 size 4,0.2 angle 0  fc "red"
set obj 2 ellipse center 5,0.5 size 4,0.2 angle 20 fc "green"
set obj 3 ellipse center 5,0.5 size 4,0.2 angle 45 fc "blue"
set obj 5 ellipse center 5,0.5 size 4,0.2 angle 90 fc "magenta"

set xrange [0:10]
set yrange [-3:3]
plot sin(x)
### end of code

如果希望旋转后椭圆的比例保持不变,则必须以相同的单位给出大直径和小直径,例如“单位xx”或“单位yy”。在这里,我使用x坐标定义了长轴与短轴的4:1比例的椭圆

set obj 1 ellipse center 5,0.5 size 4,1 fs empty bo lc "blue"  angle 0   units xx
set obj 2 ellipse center 5,0.5 size 4,1 fs empty bo lc "red"   angle 20  units xx
set obj 3 ellipse center 5,0.5 size 4,1 fs empty bo lc "green" angle 40  units xx
set xrange [0:10]
plot sin(x)

如果允许输出到虚拟文件,那么下面的解决方案如何

set terminal pdf size 10cm,10cm

set xrange [0:10]

# dummy plotting
set output "dummy.pdf"
plot sin(x)

factor =  real(GPVAL_X_MAX - GPVAL_X_MIN)/real(GPVAL_Y_MAX-GPVAL_Y_MIN) \
        * real(GPVAL_TERM_YMAX - GPVAL_TERM_YMIN)/real(GPVAL_TERM_XMAX - GPVAL_TERM_XMIN)

# real plotting
set output "test.pdf"
set obj ellipse center 5,0.5 size 4,factor*0.2 angle 20 unit xx
replot
在该脚本中,x轴和y轴之间的可见单位长度比率是使用虚拟打印确定的from变量GPVAL_*计算的。将它乘以椭圆的垂直轴,并使用与Ethan的答案相同的“单位xx”,你们可以得到你们想要的数字

如果您在UNIX(-like)系统上,请将“set output”dummy.pdf”替换为


谢谢你的提示。添加比率线会导致y轴收缩到屏幕大小的十分之一。我可以自己设置一个Y范围来解决这个问题。但是我想使用自动缩放。非常感谢,这个解决方案最适合我的情况。