如何仅为数据集中的值显示抽动?

How to display tics only for the values in the dataset?

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

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。

尝试以下操作。您可以从数据集中创建字符串并将它们与宏一起使用(参见 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.([=10=]==0?'':',').strcol(1), \
         myYtics = myYtics.([=10=]==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

结果:

您可以从 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