Adakah alat ploting (berbasis teks) di unix toolbox?


9

Saya bertanya-tanya apakah ada alat plot generik yang tersedia di unix toolbox?
Dengan memplot saya maksud bar sederhana atau hal-hal yang Anda lihat di banyak utilitas berdasarkan kutukan.
Dan dengan unix toolbox saya maksudkan hal-hal yang Anda dapat menyalurkan data ke dalamnya menggunakan konvensi unix standar.

Saya perlu menghitung sesuatu dalam file log (yang saya monitor dengan tail -Fatau sesuatu) dan plot rasio hidup hal-hal (seperti persen kesalahan atau peringatan).

Jawaban:


9

Anda sedang mencari gnuplot, dengan opsi terminaldisetel ke dumb.

Bukan pilihan pertama saya, karena saya memiliki ROOT di semua mesin saya, tetapi siaga, andal di mana-mana.

CERNLIB 's PAW juga bisa melakukan keluaran ASCII, meskipun Anda harus cukup berani untuk benar-benar menggunakannya seperti yang muncul untuk menganggap bahwa Anda memiliki 132 kolom fan kali lipat terminal.


... The development and support for CERNLIB has been discontinued. Libraries will be continued to be provided "as is", menyiagakan? Apa manfaat menggunakan PAW Cernlib daripada R Sweave Latex misalnya? Tidak pernah mendengar ini, alat generik ?! Saya menggunakan gnuplot sebelum R Sweave Latex, saya menemukan yang terakhir jauh lebih nyaman untuk digunakan - semuanya dalam satu file teks, termasuk gambar. Bisakah Anda melakukan ini dengan gnuplot?

@hhh Anda akan mencatat bentuk "PAW Cernlib juga bisa melakukan" , meskipun orang masih menggunakannya karena ada banyak kode dewasa di luar sana.
dmckee --- ex-moderator kitten

sangat baik tetapi untuk apa bagian yang ditambahkan? "132 column fan-fold terminal", apa itu? Untuk printer dot-matrix? Jadi ini proyek yang sangat lama ?! Maaf jawaban Anda terlalu dikaburkan oleh usia, "[n]ot my first choice"dengan gnuplot? Butuh waktu bagi saya untuk memahami apa yang Anda maksud dan tulis. Kenapa gnuplot?

Mode keluaran ASCII untuk PAW digambarkan sebagai "kikuk". Pada saat saya menggunakan cernlib itu asli pada X dan dapat menulis langsung ke postscript atau postscript yang dienkapsulasi yang merupakan apa yang kami gunakan, namun, sebagiannya dapat melacak akar mereka ke kode yang diletakkan pada awal 1960-an. Asumsinya adalah Anda memiliki terminal hard copy ; banyak dari mereka menggunakan format lebar 132 karakter dengan band-band terang dan gelap bergantian untuk membuatnya mudah dibaca. Geeks yang cukup tua akan dapat mengingat semua hal (Anda masih melihatnya sesekali hingga 1980).
dmckee --- ex-moderator kitten

1
set term dumbuntuk merencanakan ascii
kev

3

Anda dapat menggunakan R yang dapat menghasilkan beberapa grafik yang cukup bagus dan melakukan banyak analisis statistik pada data Anda. Posting blog ini menunjukkan kepada Anda cara untuk melakukannya.

Demikian pula, Anda dapat menggunakan gnuplot lihat di sini dan di sini


terima kasih, tetapi saya tidak ingin menggunakan GUI, tidak untuk menulis kode atau untuk menunjukkan plot, saya ingin melakukannya sepenuhnya di terminal. Selain itu, saya lebih suka menjalankannya tanpa perlu sudo (untuk instalasi apa pun).
Ali


thanx, saya tidak tahu, saya perlu mencoba ini, meskipun saya tidak pernah menggunakan R tetapi harus mudah untuk mp use case sederhana.
Ali

1

"Generic plotting tools available in the unix toolbox"mungkin setiap alat dasar Un * x, Anda perlu menggabungkan alat untuk membuat sesuatu. Saya suka menggabungkan Latex, R dan Sweave! Istilah "logs"meninggalkan pertanyaan sedikit terbuka tetapi tampaknya dengan sengaja, perhatikan istilah itu "generic". Jadi tidak ada apa-apa tentang pra-pemrosesan dengan AWK / SED / etc dan hanya tentang merencanakan datang dalam file teks. Selamat bersenang-senang!

masukkan deskripsi gambar di sini

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

Sekarang teka-teki berikutnya adalah aksesibilitas (seandainya op ingin keluaran ASCII, bukan hanya alat generik). Maaf saya belum punya jawaban untuk itu tetapi saya akan daftar info di bawah ini untuk eksplorasi lebih lanjut.

Hanya berpikir keras: pilih format gambar raster seperti TIFF dan kemudian hanya mencetak setiap kolom ke-100 atau hal-hal seperti itu untuk melihatnya. Maaf hanya berspekulasi tetapi saya tahu bahwa TIFF adalah format gambar raster de facto untuk semua jenis keperluan arsip - saya belum tahu persis bagaimana mesin OCR, seperti Tesseract, menangani mereka tetapi di sini masalahnya mudah karena Anda dapat lewati banyak hal dalam preprocessing gambar - karena kita tahu bagaimana R menghasilkannya. Seseorang punya ide bagaimana melakukan ini? Atau apakah saya menciptakan kembali roda? Paling sederhana, pilih alat yang menghasilkan engsel untuk ASCII, agak ketat "generic".

Terkait

  1. Alat apa untuk visualisasi portofolio ASCII?

Baca pertanyaan dengan seksama (dan komentar di mana itu dibuat lebih eksplisit). OP ingin menampilkan hasil di terminal .
dmckee --- ex-moderator kitten

@ dmckee: ya tapi op juga membutuhkan "generic"alat ?! Sekarang ini yang sulit karena saya pikir itu menyimpulkan probs berbasis OCR, tidak yakin apakah op menyadarinya.

Maksud saya "generik", alat multiguna, hal-hal seperti awkdan sedyang tidak "spesifik", tidak dirancang untuk penggunaan khusus. Maaf jika ini membingungkan. pada dasarnya saya ingin membuat plot bar yang sangat sederhana di terminal. Itu saja.
Ali

@ Ali: berhenti menjelaskan. Anda perintahkan, kami jawab - dan jawaban terbaik menang. Jawaban saya berfungsi kecuali "keluaran ASCII". Pertanyaan Anda sangat jelas, tetapi saat ini saya tidak dapat membantu Anda lebih jauh - jangan pedulikan orang yang memiliki pandangan berbeda, santai saja - seseorang cepat atau lambat akan menyelesaikan ini. Saya mencari solusi untuk masalah serupa juga jadi mungkin kita akan ... tidak yakin apakah kita harus menggali ke dalam mesin OCR untuk menyelesaikan ini tetapi saya pikir pertanyaan ini masih "unsolved", akan mencari ini ...

1

Anda bisa menyalurkan output numerik ke snipet perl sederhana. Misalnya, inilah program pengujian (dalam bash) yang hanya menghasilkan angka yang meningkat:

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

Dengan asumsi saya tertarik pada rentang nilai dari 0 hingga 20, dan saya memiliki lebar terminal 80 karakter, saya akan melakukan:

[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 *****************************************************************************|

Sesuatu seperti ini akan bekerja pada sembarang sistem linux, dan output serta parameternya mudah untuk di-tweak. Overhead dibandingkan dengan menggunakan sesuatu seperti gnuplot sangat kecil.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.