2

我想画一条超出轴限制的线。我尝试将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')

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

绘制在轴边界处结束的线

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

4

1 回答 1

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

在此处输入图像描述

于 2013-07-16T18:24:15.360 回答