gnuplot分开的封闭数字

时间:2016-03-29 09:34:01

标签: gnuplot

我经常会得到以下类型的图表

enter image description here

合并轴的编号。问题是gnuplot是否可以将它们放置在不同的高度,以便它们可以区分。

或者可能有其他方法使图表可读。

1 个答案:

答案 0 :(得分:2)

根据标签的生成方式,有多种方法可以实现此目的。

假设您的数据类似于

39 6
41 7
43 9
52 12
55 15
58 3
62 9
63 7
70 5
76 9
77 2
79 3

我试图模仿你的例子中的标签。

方法1

您可以旋转标签。命令set xtics rotate by <angle>将按给定角度旋转标签。

对于本演示,我将xrange设置为20-100,这样我就可以像你所示的那样强制标签重叠。我还将明确指定tic标记(gnuplot&#39;自动生成的标记通常不会重叠),因为我假设你的示例生物中它们的间距不均匀。

如果,我只是尝试用plot datafile u 1:2:xtic(1)进行绘图,我将获得重叠标签

enter image description here

如果我首先发出set xtics rotate by -50向下旋转标签50度,然后用

绘图
plot datafile u 1:2:xtic(1)

我会得到

enter image description here

重叠率明显较低。使用set xtics rotate by -90会进一步减少这种情况。

方法2

我可以为每个其他标记添加换行符以调整高度以帮助避免重叠。只有在明确指定tic标记时,此方法才有效。

我们可以通过

定义一个函数
adjustlab(x,y) = (int(x)%2==0?y:sprintf("\n%s",y))

此功能需要两个输入。第一个是行号,第二个是标签。如果行号是奇数,它将添加换行符。

我们需要先用set bmargin 3展开底部边距,然后我们可以用

进行绘图
plot datafile u 1:2:xtic(adjustlab($0,strcol(1)))

请注意,我们使用strcol函数将第1列作为字符串读取,以提供给我们的调整函数。

这会产生

enter image description here

可以构造更复杂的功能,以允许更复杂的调整条件。