gnuplot: время и поля xdata

У меня есть некоторые данные о температуре в текстовом файле, и я хотел бы представить его на «коробке», отображая температуру каждого дня, как гистограмма.

23 10 2012 12.3
28 10 2012 14.1
30 11 2012 30.4
...

Я пытаюсь представить его с помощью простого скрипта gnuplot:

set terminal png enhanced font font_file size size_x, size_y tiny
set xdata time
set timefmt "%d %m %Y"
set format x "%d"
set boxwidth 0.9 relative
plot u 1:4 w boxes

Я хотел бы оставить пустым дни, когда данные отсутствуют, но gnuplot дает в эти дни значение последнего дня, когда данные были доступны. Например, в файле данных, который я написал ранее, gnuplot дал бы 12.3 23 октября, но я бы хотел оставить этот пробел без какого-либо бара.

Есть ли способ получить это? Я отклонил представление гистограммы, потому что я читал, что он несовместим с данными времени.

заранее спасибо

4
nl ja de
Я предполагаю, что вы имеете в виду, что gnuplot даст 12.3 для 24th октября. Мне кажется, что он должен дать 12.3 для двадцать третий.
добавлено автор mgilson, источник

1 ответы

Ваша проблема - это строка set boxwidth 0.9 relative . Относительно говорит, что вы пытаетесь заполнить 90% пространства между соседними ящиками. Вероятно, вы хотите установить абсолютную пропускную способность. Если вы смените свой сценарий на установите boxwidth 0.9 absolute , вы увидите вертикальные линии. Это связано с тем, что при использовании временных данных блок оси x на самом деле секунды , поэтому ваше поле шириной ~ 1 секунду, когда ваш x-масштаб составляет несколько дней. Таким образом, чтобы каждый ящик был шириной одного дня, вы использовали бы

set boxwidth 3600*24

Вот полный скрипт:

set term png enhanced
set output 'foo.png'
set xdata time
set timefmt "%d %m %Y"
set format x "%d"
set boxwidth 3600*24
plot 'test.dat' u 1:4 w boxes

и выход:

enter image description here

3
добавлено
Большое спасибо! Это решило проблему!
добавлено автор josematamoros, источник