对于非常大的数据集,如何使用 gnuplot 仅将第一个和最后一个数据点的 tic 标记/标签放在 x 轴上?
问问题
1438 次
2 回答
4
使用 gnuplot 4.6 及更高版本,您可以使用命令
stats 'data.dat'
set xtics \
(sprintf("%.2g",STATS_min_x) STATS_min_x, \
sprintf("%.2g",STATS_max_x) STATS_max_x)
plot 'data.dat'
对于其他版本的 gnuplot,您可以使用类似的命令序列:
# this setting makes sure we don't make an output right away
set terminal unknown
plot 'data.dat'
set xtics \
(sprintf("%.2g",GPVAL_DATA_X_MIN) GPVAL_DATA_X_MIN, \
sprintf("%.2g",GPVAL_DATA_X_MAX) GPVAL_DATA_X_MAX)
set terminal <actual terminal>
replot
该set xtics
命令采用逗号分隔的字符串对和数据值,全部在括号内。
(这里我假设您想要最小和最大数据点,而不是第一个和最后一个数据点。)
有关更多信息,您可以在 gnuplot 命令行中运行它们:
help set format
help set stats
show variables all
于 2013-01-02T21:47:49.160 回答
0
我正在添加另一个答案,因为我的另一个答案确实回答了一个不同的问题,但可能有用。要回答这个问题,
如何标记第一个和最后一个数据点的 x tic?
这是我的方法:
#!/usr/bin/env gnuplot
set terminal png
set output 'test.png'
# define a function to get the first and last values.
# this assumes the file has not changed since first running 'stats',
# (and contains at least one data point)
# `plot/stats 'data.dat' using (firstlast($x))`
# should be interchangable with
# `plot/stats 'data.dat' using x
# that is, the resulting variables should be the same
firstlast(x) = ($0==0) ? (first=$1, last=$1, $1) : (last=$1, $1)
# run stats to find the first and last values
# just on x data column
stats 'data.dat' u (firstlast($1)) nooutput
# set the x tics to the first and last x points
set xtics \
(sprintf("%.2g (first)", first) first, \
sprintf("%.2g (last)", last) last)
print first
print last
plot 'data.dat'
我使用了这个示例数据文件:
数据.dat
1 1
2 2
3 3
4 2
0 3
并得到这个输出:
于 2013-01-02T22:47:10.690 回答