Vue Директива, которая создает компонент и добавляет к родителю

Чтобы получить расстояние между автоматически размещенными тиками, используйте следующий код (сохранить как 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, строка 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)

0
задан WalksAway 31 December 2018 в 11:03
поделиться