Если у меня длинный текстовый файл, и я хочу отобразить все строки, в которых встречается данный шаблон, я делаю:
grep -n form innsmouth.txt | cut -d : -f1
Теперь у меня есть последовательность чисел (один номер в строке)
Я хотел бы сделать двухмерное графическое представление с вхождением на оси X и номером строки на оси Y. Как мне этого добиться?
command-line
graphics
Абдул Аль Хазред
источник
источник
Ответы:
Вы можете использовать
gnuplot
для этого:производит что-то вроде
Вы можете настроить внешний вид графика на свое усмотрение, вывод в различных форматах изображений и т. Д.
источник
gnuplot
илиgnuplot-x11
? если первый, afaik, он обеспечивает только вывод файла (т. е. генерирует файлы pdf, png и т. д. ), а не интерактивные графики прямо на экран.seq 100 >seq.dat
, затем запустите вgnuplot
интерактивном режиме и по типу приглашенияplot "seq.dat"
?Failed to initialize wxWidgets.
с gnuplot-x11 ... Нужно ли иметь одно или другое? или можно и тоgnuplot
и другоеgnuplot-x11
установить?notitle
сюжет без заголовка.Я бы сделал это в
R
. Вам придется установить его, но он должен быть доступен в ваших репозиториях дистрибутивов. Для систем на основе Debian запуститеЭто должно также принести,
r-base-core
но если это не так, бегитеsudo apt-get install r-base-core
также. ПослеR
установки вы можете написать простой R-скрипт для этого:Сценарий выше создаст файл с именем
output.pdf
. Я тестировал следующим образом:На случайных данных, которые я использовал, получается:
Я не совсем уверен, что вы хотите построить, но это должно, по крайней мере, указать вам правильное направление.
источник
#!/usr/bin/env Rscript; args <- commandArgs(TRUE); a<-read.table(args[1]); plot(a$V2,a$V1,ylab="line number",xlab="value");
чтобы сгенерировать Rplots.pdf в том же каталоге.Если это может быть достаточно простой распечатки терминала, и вы можете быть удовлетворены перевернутыми осями, рассмотрите следующее:
Вышеприведенный график отображает инвертированный тренд по шкале 10% для каждого вхождения шаблона 11 на выходе
seq 1000
.Так:
С точками и количеством вхождений это может быть:
... который печатает ...
Вы можете получить топоры как ваш пример с гораздо большим количеством работы и
tput
- вам нужно было бы сделать\033[A
escape (или его эквивалент, который совместим с вашим эмулятором терминала), чтобы переместить курсор вверх на строку для каждого вхождения.Если
awk
«Sprintf
поддерживает пространство-набивка как POSIX-оболочкаprintf
делает, то вы можете использовать его , чтобы сделать то же самое - и , вероятно , гораздо более эффективно , а также. Я, однако, не знаю, как использоватьawk
.источник
Улучшение ответа Нейта для вывода PDF и построения линий (требуется
rsvg-convert
):источник
Или вы можете перенаправить данные stdout через pipe в пользовательский скрипт на python. Это даст вам огромное количество настроек и гибкость в разборе, предварительной обработке и визуализации данных.
Вот учебник по этому вопросу, который я написал, чтобы сделать именно так, как вы собираетесь. ссылка
источник