GNU plots_Plotting-Histogramme aus gegebenen Werten gegen die Anzahl ihrer Vorkommen

1421
aseth

Wie können wir ein Histogramm aus einer CSV-Datei, die alle Daten enthält, in einer einzigen Spalte darstellen. Ich muss diese Werte im Verhältnis zur Anzahl der Wiederholungen darstellen.

2
Bitte fügen Sie Informationen über das Betriebssystem, unter dem Sie gnuplot verwenden, über [diesen Link] (http://superuser.com/posts/930167/edit) hinzu. Hastur vor 8 Jahren 0

1 Antwort auf die Frage

1
Hastur

Es gibt einen breiten Trick, um ein Histogramm in Gnuplot zu erstellen. Wenn sich Ihre Daten in der Datei befinden mydata.csv, können Sie Folgendes versuchen

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 

Sie erstellen also Ihr Histogramm, indem Sie die Behälterbreite auswählen.
Auf eine feinere Weise können Sie die unten aufgeführten Vorschläge ausprobieren

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 
Jetzt kann ich das Histogramm zeichnen, muss aber die Anzahl der Vorkommnisse normalisieren. Ich habe aus einem anderen Forum geholfen, eine variable Summe zu definieren, aber ich bin nicht in der Lage, normalisierte Werte zu zeichnen. Ich benutze diese Befehle. set ylabel 'f / n_f' set xlabel 'k_ ^ / k_ ^ ' set xtics 0.2 set ytics 2 binwidth = 0.1 set boxwidth binwidth summe = 0 s (x) = (( summe = summe + 1), 0) bin (x, width) = width * floor (x / width) + binwidth / 2.0 plot "mydata.csv" u (bin ($ 1, binwidth)): (1.0 / (binwidth *) sum)) glatte freq w Boxen aseth vor 8 Jahren 0
Wie Sie sehen, ist es oft nicht so sauber, viele Codezeilen in einem Kommentar zu posten. Übrigens sollte eine Mehrfachfrage [in verschiedene Posts als verschiedene Fragen aufgeteilt] werden (http://meta.stackexchange.com/questions/39223/one-post-with-multiple-questions-or-multiple-posts). Dies wird anderen Menschen mit ähnlichen Zweifeln helfen. :) Hastur vor 8 Jahren 0
Nach allem, was ich verstanden habe, rufen Sie niemals _`s (x) `` s mit einem anderen Plot in Ihrer Datei auf, und Sie haben also den Wert von 'sum' nicht aktualisiert. Unter Linux oder OS können Sie es mit einem Systemaufruf auf "wc -l mydata.csv" oder mit einem Aufruf von "awk" einstellen. Machen Sie eine andere Frage, und es wird für mich einfacher sein, Ihnen eine Antwort zu geben. Hastur vor 8 Jahren 0