如何仅为数据集中的值显示抽动?
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 );
然而,这有两个副作用:
- 我必须手动查找所有值;
- 出于某种原因,它删除了边距(与自动缩放相比),所以我必须手动计算它们(
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
我有一个标准数据集,比如说:
1,10
2,15
4,20
8,5
有什么简单的方法可以只显示数据集中的值的抽样吗?
我可以手动设置它们:
set xtics ( 1, 2, 4, 8 );
set ytics ( 5, 10, 15, 20 );
然而,这有两个副作用:
- 我必须手动查找所有值;
- 出于某种原因,它删除了边距(与自动缩放相比),所以我必须手动计算它们(
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