在x轴顶部设置多个标签

时间:2011-08-08 17:07:49

标签: gnuplot

在我的早期帖子drawing vertical lines in between bezier curves得到答案之后,我一直在尝试用虚线标记分段。我使用了x2label,但发现如果我多次使用它,那么数据会被替换,尽管它们位于不同的位置。以下是剧本:

set term x11 persist

set title "Animation curves"

set xlabel "Time (secs.)"
set ylabel "Parameter"

set x2label "Phoneme1" offset -35
set pointsize 2
set key off
set style line 2 lt 0 lc 1 lw 2
plot [0.04:0.15] "curve.dat" u 1:2 smooth csplines ls 1, "" u 1:($2-0.2):(0):(0.3) w   vectors nohead ls 2, \
                "curve.dat" u 1:2 with points

输出如下。

enter image description here

我想在每个片段的顶部标记Phoneme1,Phoneme2 ......等等。我该怎么办?另外正如我在我之前的帖子中建议玩“”你1 :( $ 2-0.2):( 0):( 0.3)w vector nohead ls 2 来获得一个从上到下垂直线。但那也行不通。如何从上边距到下边线?谢谢。

1 个答案:

答案 0 :(得分:1)

水平线

可以通过将yrange设置为显式值来完成水平线。否则gnuplot会尝试在线和轴之间留出一些空间。您可以选择值

set yrange [0.3:1.2]

然后你只需使用如下方向修改矢量:

"" u 1:(0.3):(0):(1.2) w vectors nohead ls 2

(完整脚本见下文)

各部分的标签

使用您的数据集快速完成此操作将是:

set key off
set style line 2 lt 0 lc 1 lw 2
set yrange [0.3:1.2]
plot [0.04:0.15] "Data.csv" u 1:2 smooth csplines ls 1, \
                 "" u 1:(0.3):(0):(1.2) w vectors nohead ls 2, \
                 "" u ($1+0.005):(1):(sprintf("P %d", $0)) w labels

然而,这可能看起来不像你想要它的样子。您可以考虑修改数据文件以包含有关标签的一些信息,如:

#x-value y-value x-label y-label label
0.06 0.694821399177 0.65 0.1 Phoneme1
0.07 0.543022222222 0.75 0.1 Phoneme2

然后标签行看起来像:

"" u 3:4:5 w labels

完整的情节如下: Plot of script from above