【问题标题】:How to display tics only for the values in the dataset?如何仅显示数据集中值的抽动?
【发布时间】:2021-01-22 22:55:37
【问题描述】:

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

1,10
2,15
4,20
8,5

有没有什么简单的方法可以只显示数据集中的值的抽动?

我可以手动设置它们:

set xtics ( 1, 2, 4, 8 );
set ytics ( 5, 10, 15, 20 );

但是,这有两个副作用:

  1. 我必须手动查找所有值;
  2. 出于某种原因,它会删除边距(与自动缩放相比),所以我必须手动计算它们(set offsets graph 与手动设置的 tics 一起工作很奇怪)。

是否有任何简单的方法可以显示与不使用set *tics 命令相同的绘图,唯一的区别是打印的抽动?

我正在使用 Gnuplot 5.2。

【问题讨论】:

    标签: gnuplot


    【解决方案1】:

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

    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
    

    【讨论】:

    • ha,比我的建议容易得多......虽然,由于数据丢失,您的代码不会给出显示的结果(对于初学者来说,在绘图时可能不清楚如何添加数据'-') .
    • 你是对的;我总是很欣赏你给出的完整例子。谢谢。
    【解决方案2】:

    试试下面的。您可以从数据集创建字符串并将它们与宏一起使用(请参阅help macros)。也许有更简单的方法可以达到相同的结果(我想可能还有一种方法可以将 x 轴设置为 log2 轴,那么您应该自动获得 1、2、4、8、16、32 抽动。)

    代码:

    ### 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
    

    结果:

    加法:

    如果您使用以 2 为底的对数 x 轴,您将自动获得抽动,注意:1、2、4、8 是等距的。然而,set offsets 似乎只适用于线性轴(一个错误?)。见How to get (automatic) offsets in logscale plots?

    代码:

    ### 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
    

    结果:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多