单独的颜色和标记键(图例)

时间:2018-02-11 09:55:18

标签: gnuplot

我有一个包含几种类型对象的图(每个对象都从一个单独的文件中读取)。我正在为所有这些函数绘制相同的几个函数,所有函数都在同一个图形上(相同的X轴)。

我为每个标记(pt)明确设置标记(lc),因此同一个对象具有相同的标记,但相同的函数具有相同的颜色。作为一个例子,我们有2个文件,每个对象一个(|只是在这里分开文件):

0 0 0   |   0 1 1
1 1 2   |   1 1 2

让我们调用左侧文件 A ,右侧 B 。每个文件中的第1列是x轴,第2列是using 1:2,第3列是using 1:3。所以在交互式会话中使用上述文件:

gnuplot> plot "A" using 1:2 with lp pt 1 lc 'black'
gnuplot> replot "A" using 1:3 with lp pt 1 lc 'red'
gnuplot> replot "B" using 1:2 with lp pt 2 lc 'black'
gnuplot> replot "B" using 1:3 with lp pt 2 lc 'red'

我们得到:

theplot

是否可以将键分开,因此A / B出现在各自的标记旁边,并且函数名称(“using ...”)出现在具有适当颜色的行(或任何东西)旁边?< / p>

现在通过省略标题(notitle在情节命令中)我可以得到一个或另一个,但我必须选择一些统一的任意标记/颜色(取决于我选择设置为关键字) )。我可以:

  1. 以某种方式获得两把钥匙? - 最好将缺失的属性(颜色或标记)设置为不在图中的内容。
  2. 如果没有,我可以以某种方式自定义手动图例吗?

1 个答案:

答案 0 :(得分:2)

我不完全确定你想要实现什么,但是关于分割键,我不认为Gnuplot有一些“开箱即用”功能。但是,您可以(ab)使用multiplot来实现此效果。这个想法基本上是生成两个重叠的图 - 一个with points和一个with lines - 并且可以独立定位键:

set terminal pngcairo rounded font ",16"
set output 'fig.png'

$A << EOD
0   0   0
1   1   2
EOD
$B << EOD
0   1   1
1   1   2
EOD

set multiplot

set xtics out nomirror
set ytics out nomirror

eps = 0.1
set lmargin at screen eps
set rmargin at screen 1 - eps/2
set bmargin at screen eps
set tmargin at screen 1 - eps/2

#common key settings
set key left top Left reverse spacing 1.5

set key at screen 0.1,screen 1-eps
plot \
    $A u 1:2 with p ps 1.5 pt 1 lc 'black' t 'A', \
    $A u 1:3 with p ps 1.5 pt 1 lc 'red' t 'A' , \
    $B u 1:2 with p ps 1.5 pt 2 lc 'black' t 'B', \
    $B u 1:3 with p ps 1.5 pt 2 lc 'red' t 'B'

unset border; unset xtics; unset ytics

set key at screen 0.3,screen 1-eps
plot \
    $A u 1:2 with l lc 'black' t 'using 1:2', \
    $A u 1:3 with l lc 'red' t 'using 1:3', \
    $B u 1:2 with l lc 'black' t '', \
    $B u 1:3 with l lc 'red' t ''

这会给你: enter image description here