Gnuplot起始到结束位置为x

Gnuplot起始到结束位置为x,gnuplot,Gnuplot,我有一个数据文件test.tsv,它由三列组成: 字母开头和结尾 a 15 20 a 40 60 b 124 171 b 237 316 我将y轴设置为表示a和b,如何使线覆盖从开始到结束?在更一般的情况下,您可以执行以下类似于的操作 创建唯一关键点列表,并将其用作y轴标记/标签 定义查找函数并相应地绘制数据 您可以将打印样式与向量一起使用,但是如果您想要更厚的条而不是线,我会将打印样式与boxyError一起使用,因为更厚的线也会沿线方向延伸 代码: ### Schedule plot res

我有一个数据文件test.tsv,它由三列组成:

字母开头和结尾

a 15 20

a 40 60

b 124 171

b 237 316


我将y轴设置为表示a和b,如何使线覆盖从开始到结束?

在更一般的情况下,您可以执行以下类似于的操作

  • 创建唯一关键点列表,并将其用作y轴标记/标签
  • 定义查找函数并相应地绘制数据 您可以将打印样式
    与向量一起使用
    ,但是如果您想要更厚的条而不是线,我会将打印样式
    与boxyError一起使用
    ,因为更厚的线也会沿线方向延伸

    代码:

    ### Schedule plot
    reset session
    
    $Data <<EOD
    # category  start    end
    "a task"  15   20
    "b task"  40   60
    "c task"  124 171
    "d task"  237 316
    "c task"   30  35
    "a task"  111 197
    "d task"   95 103
    "b task"   80  93
    "special"  10 100
    EOD
    
    # create list of unique keys
    KeyList = ''
    set table $Dummy
        plot $Data u (Key='"'.strcol(1).'"', strstrt(KeyList,Key) ? \
        NaN : KeyList=KeyList.Key." ") w table
    unset table
    
    # define function for lookup
    Lookup(s) = (Index = NaN, sum [i=1:words(KeyList)] \
        (Index = s eq word(KeyList,i) ? i : Index,0), Index)
    
    set yrange [0.5:words(KeyList)+0.5]
    
    plot $Data u 2:(Index=Lookup(strcol(1))):($3-$2):(0):(Index): \
         ytic(word(KeyList,Index)) w vector nohead lw 4 lc var notitle
    ### end of code
    
    ###明细表绘图
    重置会话
    $Data