Jeśli mam długi plik tekstowy i chcę wyświetlić wszystkie linie, w których występuje dany wzór, wykonuję:
grep -n form innsmouth.txt | cut -d : -f1
Teraz mam sekwencję liczb (jedna liczba na linię)
Chciałbym wykonać graficzną reprezentację 2D z wystąpieniem na osi x i numerem linii na osi y. Jak mogę to osiągnąć?
command-line
graphics
Abdul Al Hazred
źródło
źródło
Odpowiedzi:
Możesz użyć
gnuplot
do tego:produkuje coś podobnego
Możesz skonfigurować wygląd wykresu według własnego uznania, wyświetlać go w różnych formatach graficznych itp.
źródło
gnuplot
lubgnuplot-x11
? jeśli ten pierwszy, afaik, zapewnia tylko wyjście pliku (tj. generowanie plików pdf, png itp. ), a nie interaktywne wykresy bezpośrednio na ekran.seq 100 >seq.dat
, a następnie uruchomgnuplot
interaktywnie i po wyświetleniu monituplot "seq.dat"
?Failed to initialize wxWidgets.
z gnuplot-x11 ... Czy muszę mieć taki czy inny? lub może zarównognuplot
ignuplot-x11
być zainstalowane?notitle
do fabuły bez tytułu.Zrobiłbym to w
R
. Musisz go zainstalować, ale powinien być dostępny w repozytoriach dystrybucji. W przypadku systemów opartych na Debianie uruchomTo również powinno przynieść,
r-base-core
ale jeśli nie, uruchomsudo apt-get install r-base-core
także. PoR
zainstalowaniu możesz napisać prosty skrypt R w tym celu:Powyższy skrypt utworzy plik o nazwie
output.pdf
. Testowałem w następujący sposób:Na losowych danych, które wykorzystałem, które dają:
Nie jestem do końca pewien, co chcesz knuć, ale to powinno przynajmniej wskazać ci właściwy kierunek.
źródło
#!/usr/bin/env Rscript; args <- commandArgs(TRUE); a<-read.table(args[1]); plot(a$V2,a$V1,ylab="line number",xlab="value");
do wygenerowania pliku Rplots.pdf w tym samym katalogu.Jeśli może się zdarzyć, że wystarczy bardzo prosty wydruk terminala, a odwrócone osie spełnią Twoje wymagania, rozważ następujące kwestie:
Powyższe pokazuje odwrócony trend w skali 10% dla każdego wystąpienia wzorca 11 na wyjściu
seq 1000
.Lubię to:
Z kropkami i liczbą wystąpień może to być:
... które drukuje ...
Możesz uzyskać osie takie jak twój przykład o wiele więcej pracy i
tput
- musisz zrobić\033[A
ucieczkę (lub jej odpowiednik zgodny z emulatorem terminala), aby przesunąć kursor w górę o linię dla każdego wystąpienia.Jeśli
awk
„sprintf
wsporniki czasoprzestrzeni wyściółka jak POSIX-shellprintf
robi, wtedy można go używać do tego samego - i prawdopodobnie znacznie bardziej efektywnie, jak to dobrze. Nie wiem jednak, jak korzystaćawk
.źródło
Ulepszając odpowiedź Nate'a w celu uzyskania danych wyjściowych w formacie PDF i kreślenia linii (wymaga:)
rsvg-convert
:źródło
Lub możesz przekierować dane standardowe przez potok do niestandardowego skryptu python. Umożliwi to ogromną personalizację i elastyczność w przetwarzaniu, przetwarzaniu wstępnym i wizualizacji danych.
Oto samouczek na ten temat, który napisałem dokładnie tak, jak zamierzałeś. połączyć
źródło