유닉스 툴박스에 (텍스트 기반) 플로팅 툴이 있습니까?


9

유닉스 도구 상자에 사용할 수있는 일반적인 플로팅 도구가 있는지 궁금합니다.
플로팅이란 단순한 저주 또는 많은 저주 기반 유틸리티에서 볼 수있는 것을 의미합니다.
유닉스 툴박스 란 ​​표준 유닉스 규약을 사용하여 데이터를 파이프 할 수있는 것을 의미합니다.

로그 파일에서 무언가를 계산하고 (모니터링 tail -F하거나 무언가 를 계산해야 함 ) 백분율 비율 또는 경고와 같은 라이브 비율을 플롯해야합니다.

답변:


9

gnuplot옵션이로 terminal설정된 찾고 dumb있습니다.

모든 머신에 루트 가 있지만 신뢰할 수있는 유비쿼터스 대기 이기 때문에 첫 번째 선택은 아닙니다 .

CernlibPAW 도 ASCII 출력을 수행 할 수 있지만 실제로 132 열 팬 폴드 터미널이 있다고 가정 할 때 실제로 사용하려면 꽤 용감해야합니다.


... The development and support for CERNLIB has been discontinued. Libraries will be continued to be provided "as is", 경고? 예를 들어 R Sweave Latex 대신 Cernlib의 PAW를 사용하면 어떤 이점이 있습니까? 이것에 대해 들어 본 적이없는 일반 도구?! R Sweave Latex 이전에 gnuplot을 사용했는데 후자는 사용하는 것이 훨씬 편리합니다. 사진을 포함한 하나의 텍스트 파일에있는 모든 것이 있습니다. gnuplot으로이 작업을 수행 할 수 있습니까?

@hhh 당신은 "Cernlib의 PAW 도 할 있다 "라는 시제에 주목할 것입니다 . 그러나 사람들은 여전히 ​​많은 성숙한 코드가 있기 때문에 그것을 사용합니다.
dmckee --- 전 운영자 고양이

잘하지만 추가 부분은 무엇입니까? "132 column fan-fold terminal"무엇입니까? 도트 매트릭스 프린터의 경우? 그래서 이것은 매우 오래된 프로젝트입니까?! "[n]ot my first choice"gnuplot으로 답변이 너무 난독 처리되어 죄송합니다 . 당신이 의미하고 쓰는 것이 무엇인지 이해할 시간이 필요합니다. 왜 gnuplot입니까?

PAW의 ASCII 출력 모드는 "clunky"로 가장 잘 설명되었습니다. 내가 cernlib를 사용할 때 그것은 X에 기본적이며 우리가 사용한 포스트 스크립트 또는 캡슐화 된 포스트 스크립트에 직접 쓸 수 있었지만, 그 일부는 1960 년대 초에 작성된 코드의 근본을 추적 할 수 있습니다. 하드 카피 터미널 이 있다고 가정합니다 . 많은 사람들이 132 자 너비의 형식을 사용하여 밝고 어두운 밴드를 번갈아 가며 읽기 쉽게했습니다. 나이가 많은 괴짜들은 모두 그 물건들을 기억할 수있을 것입니다.
dmckee --- 전 변조 고양이 새끼

1
set term dumbascii를 음모를 꾸미다
kev

3

R 을 사용 하면 꽤 멋진 그래프를 생성하고 데이터에 대한 많은 통계 분석을 수행 할 수 있습니다. 이 블로그 게시물 은이를 수행하는 방법을 보여줍니다.

마찬가지로 gnuplot 을 사용할 수 있습니다 여기여기를 참조 하십시오


고맙지 만 코드를 작성하거나 플롯을 표시하기 위해 GUI를 사용하고 싶지 않습니다. 터미널에서 완전히하고 싶습니다. 게다가, sudo를 할 필요없이 (어떤 것을 설치하기 위해) 오히려 실행할 수 있습니다.
Ali

@Ali : 다음 블로그 게시물을보십시오 : r-bloggers.com/ascii-scatterplots-in-r
Sardathrion-남용에 반대

고맙게도, 나는 R을 사용하지는 않았지만 mp 간단한 사용 사례에서는 쉬워야하지만, 이것을 시도해야합니다.
Ali

1

"Generic plotting tools available in the unix toolbox"아마도 모든 기본 Un * x 도구 일 것입니다. 도구를 결합하여 사물을 만들어야합니다. 나는 Latex, R 및 Sweave를 결합하는 것을 좋아합니다! 이 용어 "logs"는 질문을 조금 공개하지만 목적에 따라 분명히 나타납니다 "generic". 따라서 AWK / SED / etc를 사용한 사전 처리와 텍스트 파일로 오는 플롯에 대해서는 아무 것도 없습니다. 즐기세요!

여기에 이미지 설명을 입력하십시오

$ 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}

이제 다음 퍼즐은 접근성입니다. op가 일반 도구가 아닌 ASCII 출력을 원한다고 가정하십시오. 죄송합니다. 아직 답변이 없지만 추가 탐색을 위해 아래 정보를 나열하겠습니다.

소리내어 생각하기 : TIFF와 같은 래스터 이미지 형식을 선택한 다음 100 번째 열 또는 그와 비슷한 것을 인쇄하여보십시오. 추측하는 것은 유감이지만 TIFF는 모든 종류의 보관 목적을위한 사실상 래스터 이미지 형식이라는 것을 알고 있습니다 .Tesseract와 같은 OCR 엔진이 어떻게 처리하는지 아직 정확히 알지 못하지만 여기서는 문제가 쉽습니다. R은 이미지를 생성하는 방법을 알고 있기 때문에 이미지의 전처리 과정에서 많은 것을 건너 뜁니다. 누군가 이것을 어떻게 생각합니까? 아니면 바퀴를 다시 발명합니까? 가장 간단한 방법으로 ASCII에 대한 힌지를 생성하는 도구를 선택하십시오 "generic".

관련

  1. ASCII 포트폴리오 시각화를위한 도구는 무엇입니까?

질문을주의 깊게 읽으십시오 (더 명확하게 작성된 의견). OP 는 터미널에 결과를 표시하려고합니다 .
dmckee --- 전 운영자 고양이

@ dmckee : 예, op에도 "generic"도구 가 필요합니까 ?! OCR 기반 프로브를 유추한다고 생각하기 때문에 op가 그것을 실현하는지 확실하지 않기 때문에 이것은 어려운 일입니다.

"일반"으로 나는, 다목적 도구를 의미 같은 것들 awksed없는 특정 사용 케이스를 위해 설계 "특정"아니다. 혼란스러운 경우 죄송합니다. 기본적으로 터미널에서 매우 간단한 막대 그림을 만들고 싶습니다. 그게 다야.
Ali

@ 알리 : 설명을 중지하십시오. 당신은 명령하고, 우리는 대답합니다 – 가장 좋은 대답이 이깁니다. 내 대답은 "ASCII 출력"을 제외하고 작동합니다. 귀하의 질문은 분명하지만 현재로서는 더 이상 도움을 드릴 수 없습니다. 다른 견해를 가진 사람들은 신경 쓰지 말고 휴식을 취하십시오. 누군가 조만간이 문제를 해결할 것입니다. 비슷한 문제에 대한 해결책을 찾고 있습니다. 아마도 우리는 이것을 해결하기 위해 OCR 엔진을 파헤쳐 야할지 확실하지 않지만이 질문이 여전히 있다고 생각 "unsolved"합니다.

1

숫자 출력을 간단한 펄 스 니펫으로 파이프 할 수 있습니다. 예를 들어 다음은 증가하는 숫자를 출력하는 테스트 프로그램입니다 (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과 같은 것을 사용하는 것에 비해 오버 헤드는 작습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.