Gnuplot多行xtic标签

7

如果我添加一个使用3行的xticlabel,gnuplot会在第二行中间切断。有没有办法使xticlabels具有多行呢?

这是我的数据文件:

"[17h30,19h00] 25" 1
"[03h30,10h00] 21" 1
"[03h00,12h00] 26" 2
"[18h00,19h30] 27" 3
"[20h30,22h00] 25" 4
"[13h00,14h30] 25" 4
"[19h30,21h30] 25" 5
"[14h30,16h00] 25" 5
"[16h30,18h00] 25" 5
"[09h30,15h00] 25" 9

以下是我的gnuplot代码:

set terminal postscript eps color
set output '| epstopdf --filter --outfile=hist.pdf'
set auto x
set yrange [0:10]
set style histogram clustered
set boxwidth 0.95 relative
set style fill transparent solid 0.5 noborder
plot 'hist.dat' using 2:xticlabels(1) with boxes lc rgb'blue90' notitle

最终生成的图表如下所示:

enter image description here

2个回答

16

潜在问题1:xtics 重叠

您有几个选项来解决 xtic 的问题。

1)旋转 xtic

set xtics rotate by -45

这将设置xtics以从左上到右下的角度打印。

2) 更改字体大小

set xtics font ",4"

你可以将字体大小设置得非常小,但是却难以阅读。

3) 在图表的柱子之间增加间距

set style histogram gap 4

4) 更改数据文件

如果您可以控制数据文件,可以尝试在xtic标签中插入一些换行符,例如:

"17h30\n19h00\n25" 1

潜在问题2: x轴刻度过长

根据您的问题描述,您可能遇到了此问题。 Gnuplot对标签中的字符数有内置限制,在旧版本中为50,在较新版本中为200。我链接的帖子包含一个解决方法,即使用增加了MAX_ID_LEN常量的gnuplot版本。


我不认为这是主要原因。我的每个xticlabel都少于50个字符。事实上,每个标签占用17个字符。 - mariolpantunes
嗯,从您的数据文件和图表中我没有看到xtics如何占用三行。我正在努力理解您的问题所在。xtics似乎被截断了,这是主要问题吗?如果是这样,最好在绘图之前修改数据文件。 - andyras
好的,看到我的编辑了。顺便问一下:你的eps终端输出集很不寻常--你没有“pdf”或“pdfcairo”终端可用吗?如果是这样,那么你就不需要使用外部程序将eps转换为pdf。要查看可用的终端,请在gnuplot命令行上运行“print GPVAL_TERMINALS”。 - andyras
在您的情况下,您应该发出 set terminal pdfset terminal pdfcairo,然后发出 set output 'myoutput.pdf',而不是像您目前所做的那样设置 eps 终端。 - andyras

4

我遇到了类似的问题,但在我的情况下,标签来自两列(一个字符串列(1)和数字列(2)),而y轴数据在第三列。

我使用换行符“\n”将标签分成了两部分。

using 2:3:xticlabels(stringcolumn(1) . "\n\n" . stringcolumn(2)) 

在xticlabels()函数内,您可以添加任何字符串表达式。例如,我也需要进行一些数字格式化,所以我使用了以下表达式代替stringcolumn(2):

gprintf('%1.0t*10^{%S}',column(2))

希望这能有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接