Colors GNUPLOT:使用multiplot合并键条目
我想在一个图形中绘制一个DAT文件的几个数据列。对于每个数据列,我希望使用黑色(不同的虚线)线和彩色点。我找到了一般的方法(首先绘制直线(Colors GNUPLOT:使用multiplot合并键条目,colors,gnuplot,legend,Colors,Gnuplot,Legend,我想在一个图形中绘制一个DAT文件的几个数据列。对于每个数据列,我希望使用黑色(不同的虚线)线和彩色点。我找到了一般的方法(首先绘制直线(与直线),然后绘制点(与点),然后将图例项相互重叠)。例如,本文对此进行了解释: 但在我的情况下,它并没有完全起作用。我有三个问题: 第一:我想在图例周围有一个框。但是,当我将图例条目相互重叠时,这就不起作用了 第二:我想包括一个矩形对象。不知怎的,除了最后一条,这总是在绘制线的顶部 第三个问题是,xticlabels为每个绘图相互绘制。这就是为什么他们看起
与直线
),然后绘制点(与点
),然后将图例项相互重叠)。例如,本文对此进行了解释:
但在我的情况下,它并没有完全起作用。我有三个问题:
第一:我想在图例周围有一个框
。但是,当我将图例条目相互重叠时,这就不起作用了
第二:我想包括一个矩形对象
。不知怎的,除了最后一条,这总是在绘制线的顶部
第三个问题是,xticlabels
为每个绘图相互绘制。这就是为什么他们看起来很大胆,但他们不应该这样做。我发现我应该“隐藏”tics(就像我对边框和标签所做的那样),但是它对tics
不起作用
你有什么提示给我吗?
顺致敬意,
塞巴斯蒂安
@ewcz
我提议如下:
由于两个图中的键是独立的,也许最简单的解决方案是使用set object rectangle
(尽管这可能需要手动“调整”框的大小)手动绘制包围框(见下文)
矩形位于绘制线的顶部,因为它与第二个绘制重复。从某种意义上说,相对于第二个图,第二个副本位于第二个图的后面,但由于该层位于第一个图的顶部,因此它覆盖了第一个图所绘制的元素。可以通过使用取消设置对象1
删除第二个绘图上下文中的对象来消除此问题
tics
、标签
等也存在类似的问题。在下面的代码中,所有定义都移动到第一个绘图
命令之前,然后再移动到第二个绘图的取消设置
通过这些修改,脚本将如下所示:
#Start terminal
set terminal epslatex size 7.8cm, 6.1cm font ",10"
#Legend settings
pointSize = 1
yticsScale =1
keySpacing = pointSize*yticsScale*1.25
keyY = 15.5
keyX = 0.975
set key vertical Left reverse width -0.5 height +0 font ",16"
set key opaque
set key autotitle columnheader
set key bottom right spacing -1
#Format of axis numbers
set format xy '$\%g$'
set format x '\footnotesize \%10.1f'
set format y '\footnotesize \%10.1f'
#Format tics
set xtics 0,0.1 out nomirror
set xtics offset -0.2,0
set mxtics 5
set ytics 0.6,0.1 out nomirror
set ytics offset 0.4,0
set mytics 5
#Background grid setting
set grid
show grid
set object 1 rectangle from 0.132, graph 0 to 0.456, graph 1 fillcolor rgb "#A9A9A9" fs pattern 1 noborder behind
#Margins
set lmargin 5.9
set rmargin 0.5
set bmargin 3.5
#Axis range settings
set xrange [0:0.535]
set yrange [0.6:1.2]
#Format lines, boxes...
set style line 4 lt 1 lc rgb 'black' lw 2 pt 13 ps 1.25 dt 4
set style line 5 lt 1 lc rgb 'black' lw 2 pt 4 ps 1.0 dt 5
#Multiplot
set multiplot
set origin 0,0
set size 1,1
#Plots
set key at graph keyX, character keyY
#simulate key box
set object 2 rectangle from graph keyX, character keyY + 0.5*keySpacing to graph 0.65, character keyY - 1.5*keySpacing fillcolor rgb "#FFFFFF" fs pattern 2 border rgb "black"
set xlabel '\small $r/D_T\;[-]$' offset 0,+0
set ylabel '\small $c_{m2} \cdot A_{T}/Q_T\;[-]$' offset +10.5,+0
plot \
'dataset.dat' using 1:2 with lines ls 4, \
'dataset.dat' using 1:2 with points ls 4 lc rgb "#71da71" title " "
#unset these so that they are not duplicated by the following plot command
unset border
unset xtics
unset ytics
unset xlabel
unset ylabel
unset object 1
unset object 2
#Last Plot
keyY = keyY - keySpacing
set key at graph keyX, character keyY
plot \
'dataset.dat' using 1:3 with lines ls 5, \
'dataset.dat' using 1:3 with points ls 5 lc rgb "#4da6ff" title " "
然后产生(我使用了standalone
epslatex终端。这可能是字体问题,但ylabel
似乎会受益于略大的水平偏移):
工作得很好!非常感谢您的快速帮助@ewcz@SebastianRoe我的荣幸!:)
#Start terminal
set terminal epslatex size 7.8cm, 6.1cm font ",10"
#Legend settings
pointSize = 1
yticsScale =1
keySpacing = pointSize*yticsScale*1.25
keyY = 15.5
keyX = 0.975
set key vertical Left reverse width -0.5 height +0 font ",16"
set key opaque
set key autotitle columnheader
set key bottom right spacing -1
#Format of axis numbers
set format xy '$\%g$'
set format x '\footnotesize \%10.1f'
set format y '\footnotesize \%10.1f'
#Format tics
set xtics 0,0.1 out nomirror
set xtics offset -0.2,0
set mxtics 5
set ytics 0.6,0.1 out nomirror
set ytics offset 0.4,0
set mytics 5
#Background grid setting
set grid
show grid
set object 1 rectangle from 0.132, graph 0 to 0.456, graph 1 fillcolor rgb "#A9A9A9" fs pattern 1 noborder behind
#Margins
set lmargin 5.9
set rmargin 0.5
set bmargin 3.5
#Axis range settings
set xrange [0:0.535]
set yrange [0.6:1.2]
#Format lines, boxes...
set style line 4 lt 1 lc rgb 'black' lw 2 pt 13 ps 1.25 dt 4
set style line 5 lt 1 lc rgb 'black' lw 2 pt 4 ps 1.0 dt 5
#Multiplot
set multiplot
set origin 0,0
set size 1,1
#Plots
set key at graph keyX, character keyY
#simulate key box
set object 2 rectangle from graph keyX, character keyY + 0.5*keySpacing to graph 0.65, character keyY - 1.5*keySpacing fillcolor rgb "#FFFFFF" fs pattern 2 border rgb "black"
set xlabel '\small $r/D_T\;[-]$' offset 0,+0
set ylabel '\small $c_{m2} \cdot A_{T}/Q_T\;[-]$' offset +10.5,+0
plot \
'dataset.dat' using 1:2 with lines ls 4, \
'dataset.dat' using 1:2 with points ls 4 lc rgb "#71da71" title " "
#unset these so that they are not duplicated by the following plot command
unset border
unset xtics
unset ytics
unset xlabel
unset ylabel
unset object 1
unset object 2
#Last Plot
keyY = keyY - keySpacing
set key at graph keyX, character keyY
plot \
'dataset.dat' using 1:3 with lines ls 5, \
'dataset.dat' using 1:3 with points ls 5 lc rgb "#4da6ff" title " "