在Octave中显示轴限制之外的一条线

时间:2013-06-26 15:30:05

标签: gnuplot octave

我想绘制一条超出轴极限的线。我已尝试将clipping属性设置为off,如下所示:

figure
axis([0, 10, 0, 10])
hold on
set(gca,'outerPosition',[0, 0.5, 1, 0.5])
lh = line([2, 8],[8, -5]);
set(lh, 'clipping', 'off') 
print('line_plot.png')

我得到一个看起来像这样的数字:

plot with line that ends at the border of the axis

有没有办法让线延伸到x轴以外?我正在使用gnuplot和AquaTerm。这可能在另一个终端吗?

1 个答案:

答案 0 :(得分:2)

在gnuplot中,我建议注释一个箭头,它可以延伸到轴之外。这是实现您在问题中概述的最小示例:

# define the location of your plot:
bm = 0.15
lm = 0.12
rm = 0.95
tm = 0.95 
set lmargin at screen lm
set rmargin at screen rm
set bmargin at screen bm
set tmargin at screen tm  

# define your axis limits:
xmax = 10.0             
xmin = 0.0
ymax = 10.0                 
ymin = 0.0                  
set xrange [xmin:xmax]
set yrange [ymin:ymax]

# define you data points:
xstart = 2
ystart = 8
xend = 8
yend = -5

# convert points into screen coordinates:
dx_rel = (rm-lm)/(xmax-xmin)
dy_rel = (tm-bm)/(ymax-ymin)

xstart_rel = lm + dx_rel * xstart
ystart_rel = bm + dy_rel * ystart
xend_rel = lm + dx_rel * xend                                          
yend_rel = bm + dy_rel * yend  

# define 'arrow' without head in screen coordinates:
set arrow 1 from screen xstart_rel,ystart_rel \
              to screen xend_rel,yend_rel nohead  

# plot will not show when empty, include dummy plot command:
set parametric 
plot xstart, ystart not

您在gnuplot中引用的clip option不允许您将绘图扩展到轴上。它旨在删除靠近轴的数据点,以避免符号与这些轴重叠 但是,arrow可以在screen坐标中指定(在这种情况下,屏幕是绘图窗口),它允许您在轴外绘制。
要匹配特定的数据坐标,您必须将它们转换为屏幕坐标。只有在这些屏幕坐标中定义绘图边界时,这才能可靠地工作。这样,您就可以计算每个数据点在屏幕上的位置 在set arrow时,请务必在坐标前使用screen来表示正确的坐标系。
上面的脚本会给你这个情节:

enter image description here