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.
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
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.
Respuestas:
Hay un truco muy usado para construir un histograma en gnuplot. Si tus datos están en el archivo.
mydata.csv
, puedes probar algo comoAsí 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í
fuente
s(x)
en su archivo de datos con alguna otra trama, por lo que no actualizó el valor desum
. Bajo Linux o sistema operativo puede configurarlo con una llamada al sistema parawc -l mydata.csv
o con una llamada aawk
... Haga otra pregunta y me será más fácil darle una respuesta.