LINUX.ORG.RU

gnuplot,logscale


0

1

Может быть кто-нибуль сталкивался с такой проблемой:полностью всю ось ординат надо задать в логарифмическом масштабе. Гнуплот умеет это делать(set logscale y) только для положительной части оси,а мне нужна вся,т.е. чтобы на оси ординат откладывались lg(y) при y>0 и -lg(-y) при y<0. Просто брать отрицательные данные со знаком минус - «plot data.dat using 1:(-$2)» и потом сделать set yrange reverse не получится,т.к. рисуется сложная картина,вместе с различными обьектами,данные берутся из многих файлов.

Подумалось: а зачем делать логарифмическую шкалу, когда самому логарифм можно взять?

Что-то вроде:

plot data.dat using 1:($2>0?log($2):-log(-$2))

Ну и проверить, чтобы на входе нулей не было или чуть усложнить формулу.

Evgueni ★★★★★
()
Ответ на: комментарий от Evgueni

Да,видимо только так =( Жаль,я думала,что есть выход проще-т.к. данных много,и каждый входной файл сортировать конечно долго.

lapo4ka1368
() автор топика
Ответ на: комментарий от Evgueni

А вот это может быть вариантом попроще, спасибо. Только наверное имелось ввиду: plot data.dat using 1:($2<0?log($2):-log(-$2))

lapo4ka1368
() автор топика
Ответ на: комментарий от lapo4ka1368

Ну у вас же не теробайтные логи. Тот же perl довольно быстро работает. Этот же скрипт может и gnuplot-файл генерить и копировать результат куда надо, а его в свою очередь можно по крону запускать.

Evgueni ★★★★★
()
Ответ на: комментарий от Evgueni

Да,наверное ваш правильный,я видимо синтакс неправильно поняла.

lapo4ka1368
() автор топика
Ответ на: комментарий от lapo4ka1368

> Да я вообще только учусь программировать,для меня подобные задачи решать трудно =) Пишу на с++.

Для автоматизации подобных задач изучите какой-нибудь скриптовый язык. Пригодится потом неоднократно.

Сейчас наверное правильнее всего посмотреть в сторону python. Я использую perl в силу того, что переучиваться лень, а функционала и так хватает.

Evgueni ★★★★★
()
Ответ на: комментарий от lapo4ka1368

Подумалось: если вы занимаетесь анализом данных, а не просто построением картинок сетевых логов, то полезно воспользоваться более специализированными инструментами

http://www.inp.nsk.su/~baldin/DataAnalysis/index.html

Я использую ROOT, хотя сам по себе этот инструмент, точнее основной язык C++ мне не очень нравится.

Evgueni ★★★★★
()
Ответ на: комментарий от lapo4ka1368

> Научник в на Питоне как раз таки сказал не писать,хотя мне было бы ГОРАЗДО проще =(

Ааа, ну тогда пока нужно нарабатывать авторитет, дабы в будущем научник не говорил в чём надо сделать, а просил помочь разобраться с конкретной проблемой.

Evgueni ★★★★★
()
Ответ на: комментарий от BattleCoder

> религия не позволяет? :)

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

Evgueni ★★★★★
()
Ответ на: комментарий от Evgueni

«скорее всего привычка в целях минимизации усилий при разбирательстве с результатом» - да,именно поэтому- сказал,что если что-то не будет работать,то сможет чем-то мне помочь. Хотя по факту в код пока вообще не смотрел =)

lapo4ka1368
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.