两个 eps 子图,带一个图例

两个 eps 子图,带一个图例

我有两个图形,我想将它们作为两个子图形,用一个图例表示,并在 y 轴上用逗号分隔数字(例如 10,000 或 1,000,000)。

这是我目前拥有的:

在此处输入图片描述

我尝试使用“设置多图布局 1,2”,但它没有正常工作。

在此处输入图片描述

这是我的脚本:

set term postscript eps color blacktext "Helvetica" 24

set output 'figure.eps'
set key outside
#set multiplot layout 1,2

set boxwidth 0.9 absolute
set style line 2 lc rgb 'black' lt 1 lw 1
set style histogram cluster gap 3
set style fill pattern border -1
set datafile missing '-'
set style data histograms
set grid ytics

set xtics border in scale 0,0 nomirror rotate by -45  autojustify
set xtics norangelimit 
set xtics ()
set logscale y
plot "A.dat" using 3:xtic(2) title "A" ls 2, \
            '' using 4 title "B" ls 2, \
            '' using 5 title "C" ls 2, \
            '' using 6 title "D" ls 2

set datafile missing "?"
set logscale y
set style line 2 lc rgb 'black' lt 1 lw 1
set style histogram cluster gap 3
set style fill pattern border -1
set grid ytics

plot "B.dat" using 3:xtic(1) title "A" ls 2, \
            '' using 4 title "B" ls 2, \
            '' using 5 title "C" ls 2, \
            '' using 6 title "D" ls 2

unset multiplot

以及数据文件A.dat:

A   B   C   D   E   F   G
27  0.2 653.265 388.834 12.396  1.898   57406951
27  0.4 1514.187    892.661 97.012  4.224   129889867

B.数据:

A   B   C   D   E   F   G
25  0.6 312.987 216.049 54.973  1.085   33480428
28  0.6 3265.277    ?   558.423 8.769   268065210
29  0.6 7163.007    ?   1175.738    17.665  536407888
30  0.6 15958.110   ?   2620.629    36.811  1073243951
31  0.6 ?   ?   5361.464    74.357  2145001741

答案1

在您的多图中,您可以unset key让第一个图不获取图例,而对于第二个图,您可以使用at x,yx,y 在图的坐标系中的位置明确放置图例。这可能并不完美,因为生成的 EPS 边界框似乎不包含位移的图例,因此您可能需要编辑生成的 PostScript。

为了使千位组以逗号分隔,我知道您应该能够让您的语言环境为您执行此操作,方法是使用set format "%'.0f"但这对我来说不起作用,即使LC_ALL=en_US在环境中也是如此。另一种方法是修复生成的 PostScript 使用sed以添加逗号。例如,添加行

set format sprintf("XYZ%'.0f")

其中 XYZ 是一些不会出现在输出中的任意字符串,然后使用脚本对输出进行后处理:

sed -i '
/XYZ/{
 :loop
 s/\(XYZ.*[0-9]\)\([0-9]\{3\}\)/\1,\2/
 tloop
 s/XYZ//
}
' figure.eps 

最初,你会有这样的行

[ [(Helvetica) 240.0 0.0 true true 0 (XYZ100000)]

在您的文件中,上面将用XYZ100000替换100,000

在此处输入图片描述

对于上述内容,我set key at 13,10000在第二个图之前使用了它并删除了它set key outside

相关内容