GNU plots_Plotting гистограммы из заданного набора значений против числа их вхождений

1347
aseth

Как мы можем построить гистограмму из CSV-файла, содержащего все данные в одном столбце. Мне нужно изобразить эти значения в зависимости от того, сколько раз они повторяются.

2
Пожалуйста, добавьте информацию об операционной системе, в которой вы используете gnuplot, используя [эту ссылку] (http://superuser.com/posts/930167/edit) Hastur 8 лет назад 0

1 ответ на вопрос

1
Hastur

Существует широко используемый прием для построения гистограммы в gnuplot. Если ваши данные находятся в файле mydata.csv, вы можете попробовать что-то вроде

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 

Итак, вы строите свою гистограмму, выбирая ширину корзины.
Более тонким способом вы можете попробовать то, что ниже, как предложено, например, здесь

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 
Теперь я могу построить гистограмму, но мне нужно нормализовать количество вхождений. Я получил помощь от другого форума, чтобы определить переменную сумму, но я не могу построить нормализованные значения. Я использую эти команды. установить ylabel 'f / n_f' установить xlabel 'k_ ^ / k_ ^ ' установить xtics 0.2 установить ytics 2 binwidth = 0.1 установить сумму ширины полосы пропускания box = 0 s (x) = (( sum = sum + 1), 0) bin (x, width) = width * floor (x / width) + binwidth / 2.0 plot "mydata.csv" u (bin ($ 1, binwidth)) :( 1.0 / (binwidth * сумма)) гладкие коробки aseth 8 лет назад 0
Как вы можете видеть, это часто приводит к тому, что в комментариях много строк кода. Кстати, множественный вопрос должен быть [разделен на разные посты как разные вопросы] (http://meta.stackexchange.com/questions/39223/one-post-with-multiple-questions-or-multiple-posts). Это поможет другим людям с подобным сомнением. :) Hastur 8 лет назад 0
Из того, что я понимаю, вы никогда не _call_ `s (x)` в вашем файле данных с каким-либо другим графиком, и поэтому вы не обновили значение `sum`. Под Linux или ОС вы можете установить его с помощью системного вызова `wc -l mydata.csv` или с помощью вызова` awk` ... Задайте другой вопрос, и мне будет проще дать вам ответ. Hastur 8 лет назад 0

Похожие вопросы