7

如果我在第二行的中间添加一个使用 3 行 gnuplot 剪切的 xticlabel。有什么方法可以让 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

最后这是生成的图表:

在此处输入图像描述

4

2 回答 2

16

潜在问题 1:xtics 重叠

您有几个选项可以帮助解决 xtic 问题。

1)旋转xtics

set xtics rotate by -45

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

2) 更改字体大小

set xtics font ",4"

您可以使字体大小很小但不可读。

3)在图表的条形之间添加一个间隙

set style histogram gap 4

4) 更改数据文件

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

"17h30\n19h00\n25" 1

潜在问题 2:xtics 通常太长

我不太确定你的问题,但你可能会遇到这个问题。Gnuplot 对标签中的字符数有一个内置限制,在旧版本的 gnuplot 中设置为 50,最近为 200。我链接到的帖子包括一个解决方法,即编译一个增加MAX_ID_LEN常数的 gnuplot 版本。

于 2013-04-12T16:44:59.360 回答
3

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

我使用换行符“\n”将标签一分为二

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

基本上在 xticlabels() 中,您可以给出任何字符串表达式,例如,我还需要一些数字格式,而不是 stringcolumn(2) 使用以下表达式:

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

希望能帮助到你

于 2013-05-16T07:26:45.933 回答