Bất kỳ công cụ vẽ (dựa trên văn bản) trong hộp công cụ unix?


9

Tôi đã tự hỏi nếu có bất kỳ công cụ âm mưu chung có sẵn trong hộp công cụ unix?
Theo âm mưu, ý tôi là những thanh đơn giản hoặc những thứ bạn thấy trong nhiều tiện ích dựa trên lời nguyền.
Và bằng hộp công cụ unix, ý tôi là những thứ mà bạn có thể chuyển dữ liệu vào chúng bằng cách sử dụng các quy ước unix tiêu chuẩn.

Tôi cần phải đếm một số thứ trong các tệp nhật ký (mà tôi đang theo dõi tail -Fhoặc một cái gì đó) và vẽ tỷ lệ trực tiếp của mọi thứ (như lỗi phần trăm hoặc cảnh báo).

Câu trả lời:


9

Bạn đang tìm kiếm gnuplot, với tùy chọn terminalđược đặt thành dumb.

Không phải lựa chọn đầu tiên của tôi, bởi vì tôi có ROOT trên tất cả các máy của mình, nhưng là một chế độ chờ đáng tin cậy, có mặt khắp nơi.

PAW của Cernlib cũng có thể thực hiện đầu ra ASCII, mặc dù bạn phải khá can đảm để thực sự sử dụng nó vì có vẻ như bạn cho rằng bạn có một thiết bị đầu cuối gấp 132 cột.


... The development and support for CERNLIB has been discontinued. Libraries will be continued to be provided "as is", Cảnh báo? Chẳng hạn lợi ích của việc sử dụng PAW của Cernlib thay vì R Sweave latex là gì? Chưa bao giờ nghe nói về điều này, công cụ chung?! Tôi đã sử dụng gnuplot trước R Sweave latex, tôi thấy cách sử dụng sau thuận tiện hơn nhiều - mọi thứ trong một tệp văn bản, bao gồm cả hình ảnh. Bạn có thể làm điều này với gnuplot?

@hhh Bạn sẽ lưu ý sự căng thẳng của "Cernlib's PAW cũng có thể làm được" , mặc dù mọi người vẫn sử dụng nó bởi vì có rất nhiều mã trưởng thành ngoài kia.
dmckee --- ex-moderator mèo con

rất tốt nhưng phần được thêm vào để làm gì? "132 column fan-fold terminal", nó là gì? Đối với máy in ma trận điểm? Vì vậy, đây là một dự án rất cũ?! Xin lỗi, câu trả lời của bạn quá khó hiểu, "[n]ot my first choice"với gnuplot? Làm cho tôi có thời gian để hiểu những gì bạn có nghĩa và viết. Tại sao gnuplot?

Chế độ đầu ra ASCII cho PAW được mô tả tốt nhất là "cục mịch". Vào thời điểm tôi đang sử dụng cernlib, nó có nguồn gốc trên X và có thể viết trực tiếp vào phần tái bút hoặc phần tái bút được đóng gói, đó là những gì chúng ta đã sử dụng, tuy nhiên, các phần của nó có thể theo dõi nguồn gốc của chúng để mã được đặt vào đầu những năm 1960. Giả định dường như là bạn có một thiết bị đầu cuối sao chép cứng ; nhiều người trong số họ đã sử dụng định dạng rộng 132 ký tự với các dải sáng và tối xen kẽ để dễ đọc. Tất cả những người đam mê đủ tuổi sẽ có thể nhớ những thứ đó (thỉnh thoảng bạn vẫn thấy nó vào cuối năm 1980).
dmckee --- ex-moderator mèo con

1
set term dumbđể âm mưu ascii
kev

3

Bạn có thể sử dụng R có thể tạo cho bạn một số biểu đồ khá đẹp và thực hiện nhiều phân tích thống kê về dữ liệu của bạn. Bài đăng blog này cho bạn thấy một cách để làm điều đó.

Tương tự, bạn có thể sử dụng gnuplot xem tại đâyđây


cảm ơn, nhưng tôi không muốn sử dụng bất kỳ GUI nào, không phải để viết mã cũng như không hiển thị các ô, tôi muốn làm điều đó hoàn toàn trong thiết bị đầu cuối. Ngoài ra, tôi muốn chạy nó mà không cần phải sudo (để cài đặt bất cứ thứ gì).
Ali


thanx, tôi không có ý tưởng, tôi cần phải thử điều này, mặc dù tôi chưa bao giờ sử dụng R nhưng sẽ dễ dàng cho trường hợp sử dụng đơn giản mp.
Ali

1

"Generic plotting tools available in the unix toolbox"có lẽ là mọi công cụ Un * x cơ bản, bạn cần kết hợp các công cụ để tạo ra mọi thứ. Tôi thích kết hợp latex, R và Sweave! Thuật ngữ "logs"để lại câu hỏi một chút mở nhưng rõ ràng là do mục đích, chú ý thuật ngữ này "generic". Vì vậy, không có gì về xử lý trước với AWK / SED / etc và chỉ về âm mưu đến trong tệp văn bản. Chúc vui vẻ!

nhập mô tả hình ảnh ở đây

$ 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 

giấy.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}

Bây giờ câu đố tiếp theo là khả năng truy cập (giả sử op muốn đầu ra ASCII, không chỉ là công cụ chung). Xin lỗi tôi chưa có câu trả lời cho nó nhưng tôi sẽ liệt kê thông tin bên dưới để khám phá thêm.

Chỉ cần suy nghĩ lớn: chọn định dạng hình ảnh raster như TIFF và sau đó chỉ cần in cột thứ 100 hoặc s / thứ như thế để thấy nó. Xin lỗi chỉ là suy đoán nhưng tôi biết rằng TIFF là định dạng hình ảnh raster thực tế cho tất cả các mục đích lưu trữ - Tôi chưa biết chính xác làm thế nào các công cụ OCR, như Tesseract, xử lý chúng nhưng ở đây vấn đề rất dễ vì bạn có thể bỏ qua rất nhiều thứ trong quá trình tiền xử lý của hình ảnh - bởi vì chúng ta biết R tạo ra chúng như thế nào. Ai đó có một ý tưởng làm thế nào để làm điều này? Hay tôi đang phát minh lại bánh xe? Đơn giản nhất, chọn ra một công cụ tạo ra các bản lề cho ASCII, một chút hạn chế "generic".

Liên quan

  1. Những công cụ nào để trực quan hóa danh mục đầu tư ASCII?

Đọc câu hỏi cẩn thận (và các ý kiến ​​nơi nó được làm rõ ràng hơn). OP muốn hiển thị kết quả trong thiết bị đầu cuối .
dmckee --- ex-moderator mèo con

@dmckee: có nhưng op cũng yêu cầu "generic"công cụ?! Bây giờ điều này là khó bởi vì tôi nghĩ rằng nó xâm nhập vào các probs dựa trên OCR, không chắc liệu op có nhận ra nó không.

Ý tôi là "chung chung", các công cụ đa năng, những thứ như awksedkhông "cụ thể", không được thiết kế cho một trường hợp sử dụng cụ thể. Xin lỗi nếu nó khó hiểu. về cơ bản tôi muốn tạo ra các ô thanh rất đơn giản trong thiết bị đầu cuối. Đó là tất cả.
Ali

@Ali: ngừng giải thích. Bạn ra lệnh, chúng tôi trả lời - và câu trả lời tốt nhất sẽ thắng. Câu trả lời của tôi hoạt động ngoại trừ "đầu ra ASCII". Câu hỏi của bạn rất rõ ràng nhưng tại thời điểm này tôi không thể giúp bạn thêm nữa - đừng quan tâm đến những người có quan điểm khác nhau, hãy thư giãn - ai đó sẽ sớm giải quyết vấn đề này. Tôi đang tìm kiếm một giải pháp cho vấn đề tương tự tương tự vì vậy có lẽ chúng tôi sẽ ... không chắc liệu chúng tôi có phải đào sâu vào các công cụ OCR để giải quyết vấn đề này không nhưng tôi nghĩ câu hỏi này vẫn còn "unsolved", sẽ tìm kiếm điều này ...

1

Bạn chỉ có thể chuyển đầu ra số của mình thành một đoạn perl đơn giản. Ví dụ: đây là một chương trình thử nghiệm (trong bash) chỉ xuất ra số lượng tăng dần:

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

Giả sử tôi quan tâm đến một loạt các giá trị từ 0 đến 20 và tôi có một thiết bị đầu cuối rộng 80 ký tự, tôi sẽ là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 *****************************************************************************|

Một cái gì đó như thế này sẽ hoạt động trên bất kỳ hệ thống linux nào, và đầu ra và các tham số rất dễ điều chỉnh. Chi phí so với việc sử dụng một cái gì đó như gnuplot là rất nhỏ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.