Colors GNUPLOT:使用multiplot合并键条目

Colors GNUPLOT:使用multiplot合并键条目,colors,gnuplot,legend,Colors,Gnuplot,Legend,我想在一个图形中绘制一个DAT文件的几个数据列。对于每个数据列,我希望使用黑色(不同的虚线)线和彩色点。我找到了一般的方法(首先绘制直线(与直线),然后绘制点(与点),然后将图例项相互重叠)。例如,本文对此进行了解释: 但在我的情况下,它并没有完全起作用。我有三个问题: 第一:我想在图例周围有一个框。但是,当我将图例条目相互重叠时,这就不起作用了 第二:我想包括一个矩形对象。不知怎的,除了最后一条,这总是在绘制线的顶部 第三个问题是,xticlabels为每个绘图相互绘制。这就是为什么他们看起

我想在一个图形中绘制一个DAT文件的几个数据列。对于每个数据列,我希望使用黑色(不同的虚线)线和彩色点。我找到了一般的方法(首先绘制直线(
与直线
),然后绘制点(
与点
),然后将图例项相互重叠)。例如,本文对此进行了解释:

但在我的情况下,它并没有完全起作用。我有三个问题:

第一:我想在图例周围有一个
。但是,当我将图例条目相互重叠时,这就不起作用了

第二:我想包括一个
矩形对象
。不知怎的,除了最后一条,这总是在绘制线的顶部

第三个问题是,
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 " "