Unix araç kutusunda (metin tabanlı) çizim araçları var mı?


9

Unix araç kutusunda herhangi bir genel çizim araçları olup olmadığını merak ediyordum?
Grafiğe göre, basit lanet veya birçok lanet tabanlı yardımcı programda gördüğünüz şeyleri kastediyorum.
Ve unix araç kutusu ile, standart unix kurallarını kullanarak onlara veri aktarabileceğiniz şeyleri kastediyorum.

Günlük dosyaları (ben tail -Fveya bir şey ile izliyorum) bir şey saymak ve şeylerin canlı oranları (yüzde hataları veya uyarıları gibi) çizmek gerekir.

Yanıtlar:


9

gnuplotSeçeneği terminalayarlanmış olarak arıyorsunuz dumb.

İlk tercihim değil, çünkü tüm makinelerimde ROOT var , ancak güvenilir, her yerde bekleme.

CERNLIB 'ın PAW Eğer bir 132 sütun terminali fan kat olduğunu varsaymak göründüğü gibi aslında kullanmak oldukça cesur olması gerekirdi gerçi de, ASCII çıkışı yapabilirdi.


... The development and support for CERNLIB has been discontinued. Libraries will be continued to be provided "as is", uyarıyor musunuz? Örneğin R Sweave Latex yerine Cernlib's PAW kullanmanın faydası nedir? Bunu hiç duymadınız mı, genel araç ?! R Sweave Latex'ten önce gnuplot kullandım, ikincisini kullanmak için çok daha uygun buluyorum - resimler de dahil olmak üzere tek bir metin dosyasında her şey. Bunu gnuplot ile yapabilir misin?

@hhh Sen gergin dikkat edeceğiz "CERNLIB en PAW olabilir ayrıca do" olgun bir kod hayli orada olduğundan insanlar yine de kullanabilirsiniz olsa.
dmckee --- eski moderatör yavru kedi

çok iyi ama eklenen kısım ne için? "132 column fan-fold terminal", bu ne? Nokta vuruşlu yazıcılar için mi? Yani bu çok eski bir proje mi ?! Maalesef cevabınız "[n]ot my first choice"gnuplot ile çok yaşla karıştırılmış mı? Ne anlama geldiğini ve yazdığını anlamama zaman ayırıyor. Neden gnuplot?

PAW için ASCII çıkış modu en iyi "tıknaz" olarak tanımlanmıştır. Cernlib'i kullanırken X üzerinde doğaldı ve doğrudan kullandığımız postscript veya kapsüllenmiş postscript'e yazabilirdi, ancak bazı bölümleri köklerini 1960'ların başlarında ortaya koyduğu kodla izleyebilir. Bir basılı kopya terminaliniz olduğu varsayımı ; bunların birçoğu, okunmasını kolaylaştırmak için değişen açık ve koyu bantlarla 132 karakter genişliğinde bir format kullandı. Yeterince yaşlı ineklerin hepsi hatırlayabilecektir (hala ara sıra 1980 kadar geç gördünüz).
dmckee --- eski moderatör yavru kedi

1
set term dumbascii
kev

3

Size oldukça güzel grafikler üretebilen ve verileriniz üzerinde birçok istatistiksel analiz yapabilen R'yi kullanabilirsiniz . Bu blog yazısı size bunu yapmanın bir yolunu gösteriyor.

Benzer şekilde, kullanabilirsiniz gnuplot bakın burada ve burada


teşekkürler, ama herhangi bir GUI kullanmak istemiyorum, kod yazmak için ne de çizim göstermek için, ben tamamen terminalde yapmak istiyorum. Ayrıca, sudo'ya ihtiyaç duymadan çalıştırabilirim (herhangi bir şeyin kurulumu için).
Ali

@Ali: Aşağıdaki blog gönderisine bakın: r-bloggers.com/ascii-scatterplots-in-r
Sardathrion - SE kötüye karşı

Teşekkürler, hiçbir fikrim yoktu, R'yi hiç kullanmamış olmama rağmen bunu denemem gerekiyor, ancak mp basit kullanım durumu için kolay olmalı.
Ali

1

"Generic plotting tools available in the unix toolbox"muhtemelen her temel Un * x aracıdır, bir şeyler oluşturmak için araçları birleştirmeniz gerekir. Lateks, R ve Sweave'yi birleştirmeyi seviyorum! Terim "logs", soruyu biraz açık bırakır, ancak görünüşe göre, amacına dikkat edin "generic". Yani AWK / SED / etc ile ön işleme ve sadece metin dosyalarına gelen çizim hakkında hiçbir şey. İyi eğlenceler!

resim açıklamasını buraya girin

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

Şimdi bir sonraki bulmaca erişilebilirlik (op sadece ASCII çıktı istiyor, sadece genel bir araç istiyor varsayalım). Üzgünüm, henüz bir cevabım yok ama daha fazla araştırma için aşağıdaki bilgileri listeleyeceğim.

Sadece yüksek sesle düşünün: TIFF gibi raster görüntü formatını seçin ve ardından her 100. sütunu veya böyle bir şeyi yazdırın. Üzgünüm sadece tahmin ediyorum, ancak TIFF'in her türlü arşivleme amaçlı fiili bir raster görüntü formatı olduğunu biliyorum - Tesseract gibi OCR motorlarının bunları nasıl ele aldığını tam olarak bilmiyorum ama burada sorun kolay çünkü görüntünün ön işlemesinde birçok şeyi atlayın - çünkü R'nin bunları nasıl oluşturduğunu biliyoruz. Birinin bunu nasıl yapacağına dair bir fikri var mı? Yoksa tekerleği yeniden mi keşfediyorum? En basitinde, ASCII'ye menteşeler üreten, biraz kısıtlayıcı olan bir araç seçin "generic".

İlişkili

  1. ASCII portföy görselleştirmesi için hangi araçlar?

Soruyu dikkatlice okuyun (ve daha açık hale getirildiği yorumları). OP sonuçları terminalde görüntülemek istiyor .
dmckee --- eski moderatör kedi yavrusu

@ dmckee: evet ama op da "generic"araç gerektirir ?! Şimdi bu zor olanı, çünkü OCR tabanlı probları etkilediğini düşünüyorum, op'un fark edip etmediğinden emin değilim.

"Genel" ile kastedilen, çok amaçlı araçlar, "spesifik" olmayan awkve sedspesifik olmayan bir kullanım durumu için tasarlanmamış şeyler . Kafa karıştırıcıysa özür dilerim. temelde terminalde çok basit çubuk grafikler yapmak istiyorum. Bu kadar.
Ali

@ Ali: açıklamayı bırak. Siz emredersiniz, cevaplarız - ve en iyi cevap kazanır. Cevabım "ASCII çıkışı" dışında çalışıyor. Sorunuz çok net ama şu anda size daha fazla yardımcı olamıyorum - farklı görüşlere sahip olan insanları umursamayın, sadece rahatlayın - biri er ya da geç bunu çözecektir. Ben de benzer bir soruna benzer bir çözüm arıyorum, bu yüzden belki de ... biz bunu çözmek için OCR motorları kazmak gerekip gerekmediğinden emin değilim ama bu soru hala olduğunu düşünüyorum "unsolved", bu arayacak ...

1

Sayısal çıktınızı basit bir perl snippet'ine bağlayabilirsiniz. Örneğin, burada artan sayıları çıkaran bir test programı (bash'da):

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

0 ile 20 arasında bir değer aralığıyla ilgileniyorum ve 80 karakter genişliğinde bir terminalim varsa, yapacağım:

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

Bunun gibi bir şey hemen hemen her linux sistemi üzerinde çalışacaktır ve çıktı ve parametrelerin ayarlanması kolaydır. Gnuplot gibi bir şey kullanmaya kıyasla genel gider miniktir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.