Будь-які (текстові) інструменти для побудови графіків у панелі інструментів Unix?


9

Мені було цікаво, чи є в інструментальній програмі unix якісь загальні інструменти для побудови графіків?
Під графіком я маю на увазі прості бари або речі, які ви бачите в багатьох утилітах, заснованих на прокльонах.
Під панеллю інструментів unix я маю на увазі речі, які ви можете передавати в них дані за допомогою стандартних конвенцій Unix.

Мені потрібно порахувати щось у файлах журналів (за якими я монітору tail -Fчи щось) і побудувати співвідношення речей (наприклад, відсоткових помилок чи попереджень).

Відповіді:


9

Ви шукаєте gnuplot, з опцією, terminalвстановленою на dumb.

Це не мій перший вибір, тому що у мене є ROOT на всіх своїх машинах, але надійний, всюдисущий режим очікування.

CERNLIB «s PAW може також зробити висновок ASCII, хоча ви повинні бути дуже сміливим , щоб на самому ділі використовувати його , як це , здається, припустити , що у вас є 132 колонки Фальцьована термінал.


... The development and support for CERNLIB has been discontinued. Libraries will be continued to be provided "as is", настороживши? Яка користь, наприклад, використання PAW Cernlib замість R Sweave Latex? Ніколи не чув про це, загальний інструмент ?! Я використовував gnuplot перед R Sweave Latex, я вважаю останній набагато зручнішим у використанні - все в одному текстовому файлі, включаючи малюнки. Ви можете це зробити за допомогою gnuplot?

@hhh Ви зауважите, що "PAW Cernlib також може зробити" , хоча люди все ще користуються цим, оскільки там існує велика кількість зрілого коду.
dmckee --- кошеня колишнього модератора

дуже добре, але для чого додана частина? "132 column fan-fold terminal", що це? Для точкових матричних принтерів? Отже, це якийсь дуже старий проект ?! Вибачте, що ваша відповідь занадто затьмарена віком, "[n]ot my first choice"з gnuplot? Знадобиться мені час, щоб зрозуміти, що ти маєш на увазі та пишеш. Чому гнулот?

Режим виходу ASCII для PAW найкраще було описано як "незграбний". На той момент, коли я використовував cernlib, він був рідним на X, і міг писати безпосередньо на постскрипт або інкапсульований постскрипт, який є тим, що ми використовували, проте частини його можуть простежити коріння коду, закладеного на початку 1960-х. Здається, що у вас є термінал на папері ; багато з них використовували формат 132 символів із змінними світлими та темними смугами, щоб зробити їх легкими для читання. Досить старі гіки зможуть запам’ятати цей матеріал (ви його все ще бачили час від часу, як у 1980 році).
dmckee --- кошеня колишнього модератора

1
set term dumb
завести

3

Ви можете використовувати R, який може отримати вам дуже гарні графіки та зробити багато статистичних аналізів ваших даних. Ця публікація в блозі показує вам спосіб зробити це.

Аналогічно, ви можете використовувати gnuplot, див. Тут і тут


дякую, але я не хочу використовувати жоден графічний інтерфейс, ні для написання коду, ні для показу ділянок, я хочу це зробити повністю в терміналі. Крім того, я б швидше зміг би запустити його без потреби судо (для установки чого-небудь).
Алі

@Ali: Подивіться наступне повідомлення в блозі: r-bloggers.com/ascii-scatterplots-in-r
Sardathrion - проти зловживань з боку SE

ніж, я не мав уявлення, мені потрібно спробувати це, хоча я ніколи не використовував R, але повинен бути легким для mp простого використання.
Алі

1

"Generic plotting tools available in the unix toolbox"це, мабуть, кожен основний інструмент Un * x, вам потрібно комбінувати інструменти для створення речей. Я люблю поєднувати латекс, R і Sweave! Термін "logs"залишає питання трохи відкритим, але, мабуть, за призначенням, помічайте термін "generic". Тож нічого про попередню обробку за допомогою AWK / SED / тощо, і лише про побудову тексту, що надходить у текстові файли. Веселіться!

введіть тут опис зображення

$ mkdir Pictures
$ R CMD Sweave paper.Rnw 
Writing to file paper.tex
Processing code chunks with options ...
 1 : term verbatim

You can now run (pdf)latex on 'paper.tex'
$ pdflatex paper.tex 3&>/dev/null

$ evince paper.pdf 

paper.tex

$ cat paper.tex

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage[T1]{fontenc}    % intended quotes

\begin{document}
\sloppy

<<echo=FALSE>>=
png('./Pictures/examples.png')
x<-1:10
y<-10:1

par(mfrow=c(2,2))
                # Demand/Supply example
plot(x,y-2, type='l', ylab='Price', xlab="Quantity")
lines(y,x+2)
lines(x,x)

title(main="Examples by HHH for R Sweave Latex")

hist(rnorm(100))        # histogram example
plot(sin(1:1E3),cos(1:1E3)) # circle example
plot(sin(1:1E3),1:1E3)      # sin example
@
\includegraphics{./Pictures/examples.png}

\end{document}

Тепер наступна головоломка - доступність (припустимо, що оп хоче отримати ASCII вихід, а не лише загальний інструмент). Вибачте, у мене поки що немає відповіді на це, але я перелічу нижче інформацію для подальшого вивчення.

Подумайте вголос: виберіть формат растрових зображень, наприклад TIFF, а потім просто надрукуйте кожен 100-й стовпець або подібну річ, щоб побачити це. Вибачте, що я просто спекулюю, але я знаю, що TIFF - це фактично растровий формат зображення для будь-яких архівних цілей - я ще не знаю, як саме керують ними двигуни OCR, такі як Tesseract, але тут проблема проста, тому що ви можете пропустити багато речей при попередній обробці зображення - тому що ми знаємо, як R їх генерує. Хтось отримав уявлення, як це зробити? Або я вигадую колесо? Найпростіше, виберіть інструмент, який створює прив'язки до ASCII, трохи обмежуючим "generic".

Пов'язані

  1. Які інструменти для візуалізації портфеля ASCII?

Прочитайте питання уважно (та коментарі, де це зроблено більш чітко). ОП хочуть відобразити результати в терміналі .
dmckee --- кошеня колишнього модератора

@dmckee: так, але для операції потрібен також "generic"інструмент ?! Зараз це важко, тому що я думаю, що це робить висновки, засновані на OCR, не впевнений, чи реалізує це оп.

Під «родової» Я маю в виду, багатофункціональні інструменти, такі речі , як awkі sedякі не є «конкретними», не призначена для використання конкретного випадку. Вибачте, якщо це заплутано. в основному я хочу зробити дуже прості смуги в терміналі. Це все.
Алі

@Ali: припини пояснення. Ви командуєте, ми відповідаємо - і найкраща відповідь виграє. Моя відповідь працює за винятком "ASCII вихід". Ваше запитання зрозуміло, але на даний момент я не можу допомогти вам далі - не байдуже, що люди мають різні погляди, просто розслабтесь - хтось рано чи пізно це вирішить. Я так само шукаю рішення подібної проблеми, тому, можливо, ми будемо ... не впевнений, чи потрібно нам копатись у двигунах OCR, щоб вирішити це, але я думаю, це питання все ще "unsolved"буде шукати це ...

1

Ви можете просто передати цифровий вихід на простий фрагмент perl. Наприклад, ось тестова програма (в bash), яка просто видає зростаючі числа:

(i=0; while true; do sleep 1; echo $i; i=$(( $i + 3 )); done)

Якщо припустити, що мене цікавить діапазон значень від 0 до 20, і у мене є термінал в 80 символів, я зроблю:

[above snippet] | perl -ne '$min=0; $max=20; $w=80; use POSIX; $d=ceil(log($max)/log(10)); $w-=$d; $v=$_<$min?0:$_>$max?$max:$_; $s=$w*$v/($max-$min); $bar=join("", ("*")x$s); $bar=~s/.$/|/ if $v==$max; print sprintf("%${d}d ",$_)."$bar\n";'

 0 
 3 ***********
 6 ***********************
 9 ***********************************
12 **********************************************
15 **********************************************************
18 **********************************************************************
21 *****************************************************************************|
24 *****************************************************************************|

Щось подібне буде працювати майже на будь-якій системі Linux, а вихід і параметри легко налаштувати. Накладні витрати порівняно з використанням чогось на кшталт gnuplot є незначним.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.