Si tengo un archivo de texto largo y quiero mostrar todas las líneas en las que se produce un patrón determinado, hago:
grep -n form innsmouth.txt | cut -d : -f1
Ahora, tengo una secuencia de números (un número por línea)
Me gustaría hacer una representación gráfica en 2D con la aparición en el eje xy el número de línea en el eje y. ¿Cómo puedo conseguir esto?
command-line
graphics
Abdul Al Hazred
fuente
fuente
Respuestas:
Podrías usar
gnuplot
para esto:produce algo como
Puede configurar la apariencia del gráfico para deleite de su corazón, salida en varios formatos de imagen, etc.
fuente
gnuplot
ognuplot-x11
? si es el primero, afaik solo proporciona salida de archivos (es decir, generar archivos pdf, png, etc. ) en lugar de trazados interactivos directamente a la pantalla.seq 100 >seq.dat
, luego se ejecuta de formagnuplot
interactiva y en el tipo de solicitudplot "seq.dat"
?Failed to initialize wxWidgets.
con gnuplot-x11 ... ¿Necesito tener uno u otro? o puede ambosgnuplot
ygnuplot-x11
ser instalado?notitle
a la trama sin el título.Me gustaría hacer esto en
R
. Deberá instalarlo, pero debe estar disponible en los repositorios de sus distribuciones. Para sistemas basados en Debian, ejecuteEso también debería traer,
r-base-core
pero si no lo hace, corresudo apt-get install r-base-core
también. Una vez que hayaR
instalado, puede escribir un script R simple para esto:El script anterior creará un archivo llamado
output.pdf
. Probé de la siguiente manera:En los datos aleatorios que utilicé, eso produce:
No estoy completamente seguro de lo que quiere trazar, pero eso al menos debería apuntarlo en la dirección correcta.
fuente
#!/usr/bin/env Rscript; args <- commandArgs(TRUE); a<-read.table(args[1]); plot(a$V2,a$V1,ylab="line number",xlab="value");
para generar un Rplots.pdf en el mismo directorio.Si es posible que una impresión de terminal muy simple sea suficiente, y que pueda estar satisfecho con los ejes invertidos, considere lo siguiente:
Los gráficos anteriores muestran una tendencia invertida en una escala del 10% para cada aparición del patrón 11 en la salida de
seq 1000
.Me gusta esto:
Con puntos y recuento de ocurrencias podría ser:
... que imprime ...
Podría obtener los ejes como su ejemplo con mucho más trabajo y
tput
: necesitaría hacer el\033[A
escape (o su equivalente, ya que es compatible con su emulador de terminal) para mover el cursor una línea hacia arriba cada vez.Si
awk
esprintf
compatible con el relleno de espacio como lo hace el shell POSIXprintf
, puede usarlo para hacer lo mismo, y probablemente también de manera mucho más eficiente. Yo, sin embargo, no sé cómo usarloawk
.fuente
Mejorar la respuesta de Nate para tener salida en PDF y trazar líneas (requiere el
rsvg-convert
):fuente
O puede redirigir los datos stdout a través de la tubería a un script de python personalizado. Esto le permitirá una inmensa cantidad de personalización y flexibilidad para analizar, preprocesar y visualizar los datos.
Aquí hay un tutorial sobre esto que escribí para hacer exactamente lo que pretendes. enlazar
fuente