GNUPLOT готовит 5-дневную финансовую неделю - PullRequest
4 голосов
/ 13 марта 2012

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

Мне нужно, чтобы график просто включал дни недели и полностью пропускал выходные дни, чтобы на финансовом графике не было двухдневного разрыва.

У меня есть данные в формате CSV Open / Low / Close / High и отсутствуют данные о выходных, они отображаются нормально, но я не могу найти способ не показывать выходные, любая помощь будет очень признательна.

Мне бы хотелось, чтобы это было написано M / T / W / T / F / M / T / W / T / F на X, а не на M / T / W / T / F / S / S / M и т.д ...

Приветствия

Крис.

Ответы [ 5 ]

1 голос
/ 13 марта 2012

Насколько я знаю, этого нельзя сделать с помощью самого gnuplot - вам нужно привести файл в нужную форму раньше. Если вы работаете в Linux, это можно сделать с помощью чего-то вроде

awk '{if( index( $1, "S" ) == 0 ) print $0 >> "new.dat"}' old.dat

где old.dat - ваш исходный файл и new.dat новый файл без выходных. Здесь я предположил, что в вашем файле данных в качестве первой записи в каждой строке указан день недели.

Это также будет работать под Windows, но сначала вам нужно будет установить Gawk для Windows .

0 голосов
/ 22 мая 2018

Если ваш файл данных не пропущен ни по одному из дней недели, столбец даты можно рассматривать как строковый тип. (Если вы пропускаете дни недели, ваш график пропустит эти даты, не выделяя для них места, которое легко пропустить, поэтому будьте осторожны.)

У меня есть дата в качестве первого столбца в моем файле данных в формате YYYY-MM-DD. Данные, которые я строю, находятся во втором столбце. Вот соответствующие строки моей конфигурации gnuplot:

set format x '%s'
plot 'file' using 0:2:xtic(substr(strcol(1),6,10))

Строка set format сообщает gnuplot, как печатать метки x. Конфигурация using использует столбец 0 (индекс) в качестве параметра x, столбец 2 (данные) в качестве параметра y и предоставляет специальные инструкции для печати этикеток: печатаются только символы 6–10. (Это отсекает часть года, что помогает этикетке соответствовать без наложения в моем случае.)

Также см. этот SO-ответ . Я не хотел бы повторять это решение «сломанной оси» каждые выходные, но, возможно, оно могло бы вдохновить.

0 голосов
/ 10 мая 2012

Я только что натолкнулся на set xdtics сегодня.Я сомневаюсь, что вы все еще работаете над этим, но, возможно, это будет полезно для кого-то еще ... (см. help xdtics)

0 голосов
/ 11 апреля 2012

Используя какой-то внешний инструмент (я бы написал для этого скрипт на bash или python, я полагаю, это не должно быть трудным), вы можете вставить строки для выходных дней (одна строка для дня) в ваш файл данных, например, так::

2006-03-26T00:00 NaN NaN NaN NaN NaN NaN NaN NaN

(или вы можете просто добавить эти NaN s для выходных в конце файла данных и использовать ключевое слово unique)

, а затем построить, скажем,первые данные с using 1:($2) with linespoints, не using 1:2 ...

Это должно работать для вас.

0 голосов
/ 18 марта 2012

Данные не отображаются в файле, файл основан только на днях недели и пропускает выходные.Если вы строите данные, вы получаете эти 2-дневные пробелы в выходные дни, поэтому я хочу устранить эти пробелы.Это более реально сделать с осью x, имеющей выходные дни, чтобы сделать ее линейной.

Вот пример части файла:

2006-03-23T16: 59 1.7470 1.7324 1.7471 1.73440,0000 0,0000 0,0000 0,0000
2006-03-24T16: 59 1,7346 1,7308 1,7441 1,7428 0,0000 0,0000 0,0000 0,0000
2006-03-27T17: 59 1,7424 1,7415 1,7492 1,7459 0,0000 0,0000 0,0000 0,0000 0,0000
2006-03-28T17: 591,7462 1,7422 1,7537 1,7424 0,0000 0,0000 0,0000 0,0000

Если вы посмотрите на даты, в файле есть пробелы.Должны быть пробелы, потому что в эти дни нет данных.Однако график должен работать без пробелов, и это то, чего я пытаюсь достичь.

...