[英]GNUPlot - How to control interline spacing in tick labels?
我正在尝试绘制在xticks上具有两行标签的图形。 我无法再减少字体,因为它变得不可读(该图是2x2多图的一部分)。 问题是标签中的两行之间的间距太大,因此它们变得与下一列的标签太近。
我想减小行距,以使标签的线之间的距离更近,但更接近其他标签的线。
我曾考虑过手动放置标签(使用函数来计算每行的位置),但是在这样做之前,我想知道是否有人有一个更简单的解决方案。
非常感谢!
我在Ubuntu 14上使用“ gnuplot 4.6补丁程序级别4”。以下是MWE:
# Requires gnuplot >= 4.6
set terminal pdf color solid font "Helvetica, 10" enhanced size 4, 3.72
set output 'mwe.pdf'
set border 3 lc rgb "#000000"
set bmargin 9
set ylabel offset -1
TicksFont = ", 10"
Title2Font = ", 14"
set yrange[0:180 < * ]
set format y "%.0f%%"
set xtics out scale 0, 0 nomirror rotate by 90 right offset 0,0 font TicksFont
set ytics out nomirror font TicksFont
unset key
set datafile separator ";"
set style fill transparent solid 1.0 border -1
set style data boxes
set boxwidth 1.0
#Bottom-left plot
set title "C) Third (sub)plot" font Title2Font
plot '-' using ($0):2:(0xFF8080):xtic(1) notitle lc rgb variable
# Label; Value
01. Aaaaa:\nAaaaaaaaa(AA); 100
02. Bbbbb:\nBbbbbbbbbbbb(BB); 20
03. Ccccc: Ccccccc(Ccc),\nCccccccc(CCC); 30
04. Dddd: DDDD,\nDDDDDDDDDDDD(DD); 40
;NaN
01. Aaaaa:\nAaaaaaaaa(AA); 100
02. Bbbbb:\nBbbbbbbbbbbb(BB); 20
03. A single-liner; 30
04. Dddd: DDDD,\nDDDDDDDDDDDD(DD); 40
;NaN
01. Aaaaa:\nAaaaaaaaa(AA); 100
02. Bbbbb:\nBbbbbbbbbbbb(BB); 20
03. A single-liner; 30
04. Dddd: DDDD,\nDDDDDDDDDDDD(DD); 40
05. Eeee: EEEE,\nEEEEEEEEEEEE(EE); 50
end;
在gnuplot中,您无法直接控制标签所使用的行高。 但是有一个非常肮脏的解决方法来解决您的问题:
您可以在新行字符处分割标签,使用增强的标签语法更改每行的字体大小,但可以为新行字符设置不同的字体大小。 所以一个标签
set label at 0,0 "first line\nsecond line" font ",10"
更改为
set label at 0,0 "{/=10 first line}\n{/=10 second line} font ",8"
并且您的脚本更改为:
# Requires gnuplot >= 4.6
set terminal pdf color solid font "Helvetica, 10" enhanced size 4, 3.72
set output 'mwe.pdf'
set border 3 lc rgb "#000000"
set bmargin 9
set ylabel offset -1
TickSize = 10
TicksFont = ", ".TickSize
Title2Font = ", 14"
set yrange[0:180 < * ]
set format y "%.0f%%"
set xtics out scale 0, 0 nomirror rotate by 90 right offset -0.1,0 font ",8"
set ytics out nomirror font TicksFont
unset key
set datafile separator ";"
set style fill transparent solid 1.0 border -1
set style data boxes
set boxwidth 1.0
#Bottom-left plot
set title "C) Third (sub)plot" font Title2Font
set_label_size(s) = sprintf('{/=%d %s}', TickSize, s)
label(s) = strstrt(s, "\n") ? set_label_size(s[:strstrt(s, "\n")-1])."\n".set_label_size(s[strstrt(s, "\n")+1:]) : set_label_size(s)
plot '-' using ($0):2:(0xFF8080):xtic(label(strcol(1))) notitle lc rgb variable
# Label; Value
01. Aaaaa:\nAaaaaaaaa(AA); 100
02. Bbbbb:\nBbbbbbbbbbbb(BB); 20
03. Ccccc: Ccccccc(Ccc),\nCccccccc(CCC); 30
04. Dddd: DDDD,\nDDDDDDDDDDDD(DD); 40
;NaN
01. Aaaaa:\nAaaaaaaaa(AA); 100
02. Bbbbb:\nBbbbbbbbbbbb(BB); 20
03. A single-liner; 30
04. Dddd: DDDD,\nDDDDDDDDDDDD(DD); 40
;NaN
01. Aaaaa:\nAaaaaaaaa(AA); 100
02. Bbbbb:\nBbbbbbbbbbbb(BB); 20
03. A single-liner; 30
04. Dddd: DDDD,\nDDDDDDDDDDDD(DD); 40
05. Eeee: EEEE,\nEEEEEEEEEEEE(EE); 50
end;
之前(左)和之后(右):
您可以切换到epslatex
终端并在gnuplot脚本上直接使用epslatex
语法。 然后,可以将\\vspace{}
命令与负参数一起使用以减小行距,如下所示:
\shortstack{01. Aaaaa: \vspace{-0.2em} \\ Aaaaaaaaa(AA)}
尽管您需要转义反斜杠:
\\shortstack{01. Aaaaa: \\vspace{-0.2em} \\\\ Aaaaaaaaa(AA)}
仅更改整个图的大小是否可以接受,例如将图的宽度从4英寸更改为6英寸,将高度从3.72更改为5.58?
如果您将纵横比包含在其他文档中,则会保留这种纵横比。
之前:
后:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.