Gnuplot 如何仅为数据集中的值显示TIC?

Gnuplot 如何仅为数据集中的值显示TIC?,gnuplot,Gnuplot,我有一个标准数据集,比如: 1,10 2,15 4,20 8,5 是否有任何简单的方法仅显示数据集中值的TIC 我可以手动设置它们: set xtics ( 1, 2, 4, 8 ); set ytics ( 5, 10, 15, 20 ); 然而,这有两个副作用: 我必须手动查找所有值 出于某种原因,它删除了边线(与自动缩放相比),因此我必须手动计算它们(set offset graph在手动设置TIC时工作异常) 是否有任何简单的方法可以显示在不使用set*tics命令的情况下绘制的相同

我有一个标准数据集,比如:

1,10
2,15
4,20
8,5
是否有任何简单的方法仅显示数据集中值的TIC

我可以手动设置它们:

set xtics ( 1, 2, 4, 8 );
set ytics ( 5, 10, 15, 20 );
然而,这有两个副作用:

  • 我必须手动查找所有值
  • 出于某种原因,它删除了边线(与自动缩放相比),因此我必须手动计算它们(
    set offset graph
    在手动设置TIC时工作异常)
  • 是否有任何简单的方法可以显示在不使用
    set*tics
    命令的情况下绘制的相同绘图,唯一的区别是打印的tics


    我使用的是Gnuplot 5.2。

    请尝试以下操作。您可以从数据集中创建字符串,并将其与宏一起使用(请参见帮助宏)。也许有更简单的方法可以实现相同的结果(我想也有一种方法可以将x轴设置为log2轴,然后您应该自动获得1,2,4,8,16,32 tics)

    代码:

    ### setting special tics semi-automatically
    reset session
    
    $Data <<EOD
    1, 10
    2, 15
    4, 20
    8,  5
    EOD
    
    set datafile separator comma
    
    set table $Dummy
        plot myXtics=myYtics='' $Data using \
            (myXtics = myXtics.($0==0?'':',').strcol(1), \
             myYtics = myYtics.($0==0?'':',').strcol(2)) w table
    unset table
    
    set offsets 1,1,1,1
    set xtics (@myXtics)
    set ytics (@myYtics)
    set grid xtics, ytics
    
    plot $Data u 1:2 w p pt 7 notitle
    ### end of code
    
    ### setting special tics semi-automatically
    reset session
    
    $Data <<EOD
    1, 10
    2, 15
    4, 20
    8,  5
    EOD
    
    set datafile separator comma
    
    set logscale x 2
    
    set offsets 1,1,1,1  # offsets works on linear y-axis but not on log x axis
    set xrange [0.75:12]
    set grid xtics, ytics
    
    plot $Data u 1:2 w p pt 7 notitle
    ### end of code
    
    结果:

    ### setting special tics semi-automatically
    reset session
    
    $Data <<EOD
    1, 10
    2, 15
    4, 20
    8,  5
    EOD
    
    set datafile separator comma
    
    set table $Dummy
        plot myXtics=myYtics='' $Data using \
            (myXtics = myXtics.($0==0?'':',').strcol(1), \
             myYtics = myYtics.($0==0?'':',').strcol(2)) w table
    unset table
    
    set offsets 1,1,1,1
    set xtics (@myXtics)
    set ytics (@myYtics)
    set grid xtics, ytics
    
    plot $Data u 1:2 w p pt 7 notitle
    ### end of code
    
    ### setting special tics semi-automatically
    reset session
    
    $Data <<EOD
    1, 10
    2, 15
    4, 20
    8,  5
    EOD
    
    set datafile separator comma
    
    set logscale x 2
    
    set offsets 1,1,1,1  # offsets works on linear y-axis but not on log x axis
    set xrange [0.75:12]
    set grid xtics, ytics
    
    plot $Data u 1:2 w p pt 7 notitle
    ### end of code
    

    尝试以下方法。您可以从数据集中创建字符串,并将其与宏一起使用(请参见帮助宏)。也许有更简单的方法可以实现相同的结果(我想也有一种方法可以将x轴设置为log2轴,然后您应该自动获得1,2,4,8,16,32 tics)

    代码:

    ### setting special tics semi-automatically
    reset session
    
    $Data <<EOD
    1, 10
    2, 15
    4, 20
    8,  5
    EOD
    
    set datafile separator comma
    
    set table $Dummy
        plot myXtics=myYtics='' $Data using \
            (myXtics = myXtics.($0==0?'':',').strcol(1), \
             myYtics = myYtics.($0==0?'':',').strcol(2)) w table
    unset table
    
    set offsets 1,1,1,1
    set xtics (@myXtics)
    set ytics (@myYtics)
    set grid xtics, ytics
    
    plot $Data u 1:2 w p pt 7 notitle
    ### end of code
    
    ### setting special tics semi-automatically
    reset session
    
    $Data <<EOD
    1, 10
    2, 15
    4, 20
    8,  5
    EOD
    
    set datafile separator comma
    
    set logscale x 2
    
    set offsets 1,1,1,1  # offsets works on linear y-axis but not on log x axis
    set xrange [0.75:12]
    set grid xtics, ytics
    
    plot $Data u 1:2 w p pt 7 notitle
    ### end of code
    
    结果:

    ### setting special tics semi-automatically
    reset session
    
    $Data <<EOD
    1, 10
    2, 15
    4, 20
    8,  5
    EOD
    
    set datafile separator comma
    
    set table $Dummy
        plot myXtics=myYtics='' $Data using \
            (myXtics = myXtics.($0==0?'':',').strcol(1), \
             myYtics = myYtics.($0==0?'':',').strcol(2)) w table
    unset table
    
    set offsets 1,1,1,1
    set xtics (@myXtics)
    set ytics (@myYtics)
    set grid xtics, ytics
    
    plot $Data u 1:2 w p pt 7 notitle
    ### end of code
    
    ### setting special tics semi-automatically
    reset session
    
    $Data <<EOD
    1, 10
    2, 15
    4, 20
    8,  5
    EOD
    
    set datafile separator comma
    
    set logscale x 2
    
    set offsets 1,1,1,1  # offsets works on linear y-axis but not on log x axis
    set xrange [0.75:12]
    set grid xtics, ytics
    
    plot $Data u 1:2 w p pt 7 notitle
    ### end of code
    

    您可以从plot命令调用
    xtic()
    xtic()
    。例如:

    set datafile separator comma
    set offsets graph 0.1, graph 0.1, graph 0.1, graph 0.1
    plot '-' using 1:2:xtic(1):ytic(2)  pt 7  lc black  title ""
    1,10
    2,15
    4,20
    8,5
    end
    

    您可以从plot命令调用
    xtic()
    xtic()
    。例如:

    set datafile separator comma
    set offsets graph 0.1, graph 0.1, graph 0.1, graph 0.1
    plot '-' using 1:2:xtic(1):ytic(2)  pt 7  lc black  title ""
    1,10
    2,15
    4,20
    8,5
    end
    

    哈,比我的建议简单多了。。。尽管如此,您的代码不会给出显示的结果,因为缺少数据(对于初学者来说,在绘制
    '-'
    时,可能不清楚如何添加数据);我一直很感激你给出的完整的例子。谢谢。哈,比我的建议简单多了。。。尽管如此,您的代码不会给出显示的结果,因为缺少数据(对于初学者来说,在绘制
    '-'
    时,可能不清楚如何添加数据);我一直很感激你给出的完整的例子。谢谢