Si j'ai un long fichier texte et que je veux afficher toutes les lignes dans lesquelles se produit un motif donné, je fais:
grep -n form innsmouth.txt | cut -d : -f1
Maintenant, j'ai une séquence de chiffres (un numéro par ligne)
Je voudrais faire une représentation graphique 2D avec l'occurrence sur l'axe des x et le numéro de ligne sur l'axe des y. Comment puis-je atteindre cet objectif?
command-line
graphics
Abdul Al Hazred
la source
la source
Réponses:
Vous pouvez utiliser
gnuplot
pour cela:produit quelque chose comme
Vous pouvez configurer l'apparence du graphique à votre guise, la sortie dans différents formats d'image, etc.
la source
gnuplot
ougnuplot-x11
? dans le premier cas, autant que je sache, il ne fournit que la sortie de fichier (c'est-à-dire la génération de fichiers pdf, png, etc. ) plutôt que des tracés interactifs directement à l'écran.seq 100 >seq.dat
, puis exécutez-le de manièregnuplot
interactive et à l'inviteplot "seq.dat"
?Failed to initialize wxWidgets.
avec gnuplot-x11 ... Dois-je avoir l'un ou l'autre? ou peutgnuplot
-gnuplot-x11
on installer les deux?notitle
à l'intrigue sans le titre.Je ferais ça en
R
. Vous devrez l’installer mais il doit être disponible dans vos dépôts de distributions. Pour les systèmes basés sur Debian, exécutezCela devrait également apporter,
r-base-core
mais sinon, lancez-voussudo apt-get install r-base-core
aussi. Une fois que vous avezR
installé, vous pouvez écrire un script simple pour cela:Le script ci-dessus va créer un fichier appelé
output.pdf
. J'ai testé comme suit:Sur les données aléatoires que j'ai utilisées, cela produit:
Je ne suis pas tout à fait sûr de ce que vous voulez tracer mais cela devrait au moins vous orienter dans la bonne direction.
la source
#!/usr/bin/env Rscript; args <- commandArgs(TRUE); a<-read.table(args[1]); plot(a$V2,a$V1,ylab="line number",xlab="value");
pour générer un fichier Rplots.pdf dans le même répertoire.Si une impression de terminal très simple peut suffire et que les axes inversés vous satisfont, considérez les points suivants:
Les graphiques ci-dessus représentent une tendance inversée sur une échelle de 10% pour chaque occurrence du motif 11 dans la sortie de
seq 1000
.Comme ça:
Avec les points et le nombre d'occurrences, cela pourrait être
... qui imprime ...
Vous pouvez obtenir les axes tels que votre exemple avec beaucoup plus de travail et
tput
- vous devez effectuer l'\033[A
échappement (ou son équivalent compatible avec votre émulateur de terminal) pour déplacer le curseur d'une ligne vers le haut pour chaque occurrence.Si
awk
de » l'printf
espace-rembourrage des supports comme le shell POSIXprintf
fait, vous pouvez l' utiliser pour faire la même chose - et probablement beaucoup plus efficace aussi bien. Cependant, je ne sais pas comment utiliserawk
.la source
Améliorer la réponse de Nate pour avoir une sortie PDF et tracer des lignes (nécessite
rsvg-convert
):la source
Vous pouvez également rediriger les données stdout via un canal vers un script python personnalisé. Cela vous permettra une énorme quantité de personnalisation et de flexibilité pour l'analyse, le pré-traitement et la visualisation des données.
Voici un tutoriel sur ce que j'ai écrit pour faire exactement ce que vous souhaitez. lien
la source