Gnuplot: сдвинуть каждое значение каждой оси на единицу - PullRequest
0 голосов
/ 27 февраля 2020

Мне нужна ваша помощь для некоторых случаев:

У меня есть такой тип данных:

2019-10-08-13-37    /dev/hd1    256.00  26.25   /home
2019-10-08-18-00    /dev/hd1    256.00  25.86   /home
2019-10-09-00-00    /dev/hd1    256.00  25.68   /home
2019-10-09-06-00    /dev/hd1    256.00  25.5    /home
2019-10-09-12-00    /dev/hd1    256.00  26.32   /home
2019-10-09-18-00    /dev/hd1    256.00  26.14   /home

У меня есть скрипт gnuplot:

set terminal pngcairo truecolor size 7330, 340  background rgb "#eff1f0" font "Arial"

set output "/xxx/xxx/www/xxx/foo.png"
set style line 1 \
    linecolor rgb '#0060ad' \
    linetype 1 linewidth 1 \
    pointtype 7 pointsize 1

set size 1, 1
set key outside vertical center right
set datafile separator ";"
set xlabel "DATE" font ",1"
set xtics rotate by 90 offset 0, -2 font ",7"
set format y "%g"


plot "/xxx/xxx/xxx/xxx/data.txt" using 3:xtic(1) with linespoints linestyle 1 title "total"

Это позвольте отобразить этот график: enter image description here

Я хотел бы уменьшить каждое значение следующим образом:

254
|
|
253
|
|___my_date1___my_date2

Но я не знаю, как это сделать ... Не могли бы вы показать мне?

1 Ответ

1 голос
/ 28 февраля 2020

Быстрое решение вашего вопроса может быть следующим:

set offsets 1,1,1,1   # left, right, top, bottom

В консоли gnuplot проверьте help offsets.

Если вы выводите данные о времени, я бы не использовал xtic(1) для Этикетки xti c. Если у вас есть тысячи точек данных, у вас будет тысячи xtics.

Попробуйте код ниже. gnuplot будет автоматически масштабироваться, и вам могут не потребоваться смещения.

Код:

### plotting time data
reset session

$Data <<EOD
2019-10-08-13-37    /dev/hd1    256.00  26.25   /home
2019-10-08-18-00    /dev/hd1    256.00  25.86   /home
2019-10-09-00-00    /dev/hd1    256.00  25.68   /home
2019-10-09-06-00    /dev/hd1    256.00  25.5    /home
2019-10-09-12-00    /dev/hd1    256.00  26.32   /home
2019-10-09-18-00    /dev/hd1    256.00  26.14   /home
EOD

myTimeFmt = "%Y-%m-%d-%H-%M"
set format x "%Y-%m-%d\n%H:%M" time

plot $Data u (timecolumn(1,myTimeFmt)):4 w lp pt 7 title "my data"
### end of code

Результат:

enter image description here

...