3

我在 Gnuplot 中创建重叠图,因为我混合了法线图和参数图(以及 pm3d 地图和参数曲面)。这大部分都很好,除了一件事:如果两个图都有标题,则图例通常会重叠。一个典型的例子如下所示:

#legends.gp
set term pngcairo enhanced color linewidth 1.5  dashed dashlength 1.4 rounded
set output "legends.png"

set title "legends test"

set multiplot

# make a box around the legend
set key box

set border 15 lw 1

# fix the margins, this is important to ensure alignment of the plots.
set lmargin at screen 0.15
set rmargin at screen 0.98
set tmargin at screen 0.90
set bmargin at screen 0.15

set xlabel "x"
set ylabel "sin(x)"

set xrange[0:2*pi]
set yrange[-1:1]

set grid x y

# add single tic at 0.62
set xtics add ("x0" 0.62)

# main plot command
plot sin(x) title "sinus"

# turn everything off
set format x ""   #numbers off
set format y ""
set xlabel ""     #label off
set ylabel ""
set border 0      #border off
unset xtics       #tics off
unset ytics
unset grid        #grid off
unset title       #title off

#plot vertical line at 0.62
set parametric
plot 0.62,t ls 2 lw 2 title "parametric Line"
unset parametric

unset multiplot

传奇.png 我现在的问题是,是否有一种简单的、主要是自动的方法来为多个图创建一个图例?

PS 抱歉,我最终通过显示更多功能使示例文件变得比它必须的更复杂,希望对未来的读者有所帮助。

4

2 回答 2

12

这是一个非常肮脏的黑客,对我有用。改变:

plot sin(x) title "sinus"

至:

plot sin(x) title "sinus",NaN w l ls 2 lt 2 title "parametric line"

然后绘制没有标题的参数线(例如notitle,代替title "parametric line")。

这是因为 gnuplot 在绘图时忽略了 NaN ——本质上,我们在上面绘制的第二件事只是在图例中添加了一个元素。我将线型等指定为与您的参数绘图线型/类型相同,以便它在图例中正确显示。据我所知,这是做这样的事情的唯一方法......

当然,您可以只编辑它,以便以参数方式绘制两者并放弃整个多图业务......

set xrange [0:2*pi]
set yrange [-1:1]
set parametric
set trange [-10:10]
plot t,sin(t) title "Hello", 0.62,t title "World"

这可能是“更清洁”的解决方案......(但使用 gnuplot“魔法”的乐趣较少)

于 2012-04-27T17:50:18.007 回答
0

从 gnuplot 信息手册:

要在 x=3 处从图形底部到顶部绘制一条垂直线,请使用: set arrow from 3, graph 0 to 3, graph 1 nohead

于 2012-08-31T17:35:00.940 回答