GNUPLOT:使用多时隙合并键条目

时间:2018-05-08 07:48:15

标签: colors gnuplot legend

我想在一个图中绘制一个数据文件的几个数据列。对于每个数据列,我想使用黑色(不同的虚线)和彩色点。我发现了一般的方法(首先绘制线条(echo do_shortcode("[product_attributes]"); )然后绘制点(with lines),然后将图例条目相互叠加)。这个例子在这篇文章中有解释: Merge key entries in gnuplot

但是我的情况并不完全正常。我有三个问题:

首先:我希望在传奇周围有一个with points。但是当我将图例条目移到彼此之上时,这不起作用......

第二:我想加入box。不知何故,除了最后一行之外,这总是位于绘制线之上......

第三个问题:每个情节彼此绘制rectangle object。这就是他们似乎不应该大胆的原因。我发现我应该"隐藏" xticlabels(就像我对ticsborder所做的那样),但它不会以某种方式对labels起作用......

你有什么提示吗? 最好的祝福, 塞巴斯蒂安 @ewcz

tics

1 个答案:

答案 0 :(得分:2)

我建议如下:

  1. 由于两个图中的键都是独立的,因此最直接的解决方案可能是使用set object rectangle手动绘制包围框(见下文)(尽管这可能需要一些手册"调整&#34 ;盒子的大小)。
  2. 矩形位于绘制线的顶部,因为它是由第二个绘图复制的。从某种意义上说,第二个副本相对于第二个图是behind,但由于该图层位于第一个图的顶部,因此它涵盖了第一个plot绘制的元素。可以通过使用unset object 1删除第二个图中的对象来消除这种情况。
  3. ticslabels等类似的问题。在下面的代码中,所有定义都在第一个plot命令之前移动,然后在第二个图中移动unset
  4. 通过这些修改,脚本将如下所示:

    #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会受益于略大的水平偏移量):

    enter image description here