Gráficos de GNU Gráficos de histogramas de un conjunto de valores dado contra el número de sus ocurrencias

2

¿Cómo podemos trazar un histograma de un archivo csv que contiene todos los datos en una sola columna? Necesito trazar esos valores frente a la cantidad de veces que se repiten.

aseth
fuente
Agregue información sobre el sistema operativo en el que utiliza gnuplot usando este enlace
Hastur

Respuestas:

1

Hay un truco muy usado para construir un histograma en gnuplot. Si tus datos están en el archivo. mydata.csv, puedes probar algo como

binwidth=1                          # here you can set the bin width 
bin(x,width)=width*floor(x/width)   # here the binning function
plot "mydata.csv" using (bin($1,binwidth)):(1.0) smooth freq with boxes

Así que estás construyendo tu histograma eligiendo el ancho del cubo.
De una manera más fina puedes probar lo que sigue como se sugiere por ejemplo aquí

Min = 1.0  # where binning starts
Max = 12.0 # where binning ends
n = 11 # the number of bins
width = (Max-Min)/n # binwidth is evaluates to 1.0
bin(x,width) = width*(floor((x-Min)/width)+0.5) + Min
plot "mydata.csv" using (bin($1,width)):(1.0) smooth freq with boxes
Hastur
fuente
Ahora puedo trazar el Histograma, pero necesito normalizar el número de ocurrencias. Tomé la ayuda de otro foro para definir una suma variable, pero no puedo trazar los valores normalizados. Estoy usando estos comandos. set ylabel 'f / n_f' set xlabel 'k_ {ij} ^ {n} / k_ {0} ^ {n}' set xtics 0.2 set ytics 2 binwidth = 0.1 set boxwidth binwidth sum = 0 s (x) = (( suma = suma + 1), 0) bin (x, ancho) = ancho floor (x / width) + binwidth / 2.0 plot "mydata.csv" u (bin ($ 1, binwidth)) :( 1.0 / (binwidth suma)) cajas de frecuencia suave
aseth
Como puede ver, a menudo resulta no tan fácil publicar muchas líneas de código en un comentario. Por cierto una pregunta múltiple debe ser dividir en diferentes mensajes como diferentes preguntas . Esto ayudará a otras personas con dudas similares. :)
Hastur
De lo que te entiendo nunca llamada s(x) en su archivo de datos con alguna otra trama, por lo que no actualizó el valor de sum. Bajo Linux o sistema operativo puede configurarlo con una llamada al sistema para wc -l mydata.csv o con una llamada a awk... Haga otra pregunta y me será más fácil darle una respuesta.
Hastur