爲了得到自動放置抽動之間的距離,使用下面的代碼(保存爲ticstep.gp
):
xr = abs(max_value - min_value)
power = 10.0 ** floor(log10(xr))
xnorm = xr/power # approximate number of decades
posns = 20.0/xnorm;
if (posns > 40) {
tics = 0.05
} else {
if (posns > 20) {
tics = 0.1
} else {
if (posns > 10) {
tics = 0.2
} else {
if (posns > 4) {
tics = 0.5
} else {
if (posns > 2) {
tics = 1
} else {
if (posns > 0.5) {
tics = 2
} else {
tics = ceil(xnorm)
}
}
}
}
}
}
ticstep = tics * power
這應該是等效於內部的gnuplot-代碼來確定ticstep(見axis.c, line 589。
只獲取ticstep,你可以使用stats
來獲取相應的數據值:
stats 'file.txt' using 1 noutput
max_value = STATS_max
min_value = STATS_min
load 'ticstep.gp'
print ticstep
要獲得繪製的抽搐數量,您需要自動擴展軸限制(除非您使用set autoscale fix
)。爲此,您可以使用unknown
終端進行繪圖以獲取GPVAL_Y_MAX
和GPVAL_Y_MIN
:
set terminal push # save current terminal
set terminal unknown
plot 'file.txt' using 1
set terminal pop # restore terminal
max_value = GPVAL_Y_MAX
min_value = GPVAL_Y_MIN
load 'ticstep.gp'
print sprintf('ticstep = %f', ticstep)
numtics = int((xr/ticstep) + 1)
print sprintf('numtics = %d', numtics)
with ticstep.gn you saved my day。再次:)它幫助我生成定製ytics – taiko 2017-07-18 18:09:53
@taiko非常好,它幫助你 – Christoph 2017-07-18 18:12:44
是的。作爲提問者,我需要用不同的數據範圍生成更多的地塊。自動縮放無法令我滿意。有了STATS_min,STATS_max和你的ticstep函數的一些細節,我可以做「設置ytics STATS_min,ticstep,STATS_max」。 – taiko 2017-07-18 18:34:30