Gnuplot:自动放置x2 tic标签

时间:2012-07-18 20:23:52

标签: gnuplot

我有想要在gnuplot中绘制的数据,看起来像这样:

1.08 1 4.8
1.53 2 5.9
2.11 3 5.1
2.60 4 6.0

不是非常重要,第一列是遗传算法的运行时间,第二列是世代数,第三列是平均适应度。

如果我使用plot datafile.dat using 1:3 with lines绘制它,它看起来很好,抽搐有适当的距离。然而,虽然我希望用时间标记x-tics,但我希望x2-tics用世代号标记。使用plot datafile.dat using 1:3:x2ticlabels(2) with lines很容易,但对于x2轴,它会为数据文件中的每一行添加一个勾号,而不是自动选择适当数量的抽动。

我的完整数据文件有数千个条目,这会在图形顶部产生一条黑色实线,其中抽搐将间隔开来,并且在标签放置位置上方会有一条较大的黑色实线。即使我尝试手动告诉gnuplot使用set x2tics 100在图表上放置抽搐的频率,它仍然会为每个条目显示它们。有没有办法来解决这个问题?显然我更喜欢自动选择显示哪些抽搐,但如果我必须手动完成,那就没问题了。完整的gnuplot配置文件非常基本,只需:

set logscale y 10
set x2tics
plot datafile.dat using 1:3:x2ticlabels(2) with lines

1 个答案:

答案 0 :(得分:1)

这是一个只为数据文件中的每一行添加标签的解决方案。

plot 'test.dat' u 1:3:x2ticlabels(int($0)%2==0?stringcolumn(2):'')

有一点有趣的是,抽搐与积分并不完全相符。我还没弄清楚为什么呢。有数千个点,你可能不太注意,但是你的示例数据文件有4个点,这是显而易见的。

不幸的是,它仍然在数据文件中的每一行的轴上绘制一个tic。 set x2tics scale 0会让这些抽搐完全消失。