GNUPLOT

-не так Часто Задаваемые Вопросы-

обновлено 2010/12/26

О 2D Plot (No.7)

1 | 2 | 3 | 4 | 5 | 6 | 7
up

Отображение графика с нормальной осью вероятности.

from Dr. Moriyama. Thanks !

В области инженерных измельчений или распылений, часто готовится распределения частиц. Зачастую показывают "график нормального распределения", который становиться прямой линией в "нормальных вероятностях"(фракциях) в противовес формуляру(размеру) построения, и использется так называемая "нормальная ось вероятности". С двумя встроенными функциями: нормальный критерий распределения() и обратный нормальный критерий распределения() - только Gnuplot может построить нормальную ось вероятности. Следующий скрипт показывает как построить "нормальную ось вероятности" для y. Другое изменение масштаба может быть сделано аналогично.

gnuplot> set ytics ("0.1" invnorm(0.001),"1" invnorm(0.01),"5" invnorm(0.05),\
>          "10" invnorm(0.1),"20" invnorm(0.2),"30" invnorm(0.3),\
>          "40" invnorm(0.4),"50" invnorm(0.5),"60" invnorm(0.6),\
>          "70" invnorm(0.7),"80" invnorm(0.8),"90" invnorm(0.9),\
>          "95" invnorm(0.95),"99" invnorm(0.99),"99.9" invnorm(0.999))

gnuplot> set yrange [invnorm(0.0001):invnorm(0.9999)]
gnuplot> set ylabel "Cumulative mass fraction (%)"
gnuplot> set xlabel "Diameter (mm)"
gnuplot> set logscale x
gnuplot> set grid
gnuplot> plot "sample.dat" using 1:(invnorm($2)) notitle w lp
fig/sample5.17a

В этом примере ось X предпологается для данных в логарифмической градаии вместе с графиком нормального распределения.

up

Как я могу напечатать значения каждой точки данных?

from Jon, Thanks !

Иногда полезно, когда значения точек данных подписанны рядом с ними. Однако Gnuplot не может переносить значения точек данных из файла данных в текст, их нужно читать при помощи другой программы и показывать при помощи команды set label . Предположим, есть данные, и эти данные представленны точками, тогда тогда отображаем те значения вблизи точек данных.

  0.40  80
  3.00  70
  3.00  60
  6.00  50
  9.00  40
 12.00  30
 13.00  20
  5.00  20
  8.00  20

Поскольку Gnuplot не может в одиночку сделать это, мы создаем команды label с Perl. Gnuplot нуждается в следующих линиях:

gnuplot> set label "(0.4,80)" at 0.4,80
gnuplot> set label "(3.0,70)" at 3.0,70

Эти линии могут быть полученны так:

  % perl -ane 'print "set label \"($F[0],$F[1])\" at $F[0],$F[1]\n"' file.dat > label.plt

Сейчас считываем эти Gnuplot команды в построении, числовые значения приведены в каждой точке.

gnuplot> load "label.plt"
gnuplot> plot 'file.dat' u 1:2 smooth csp with lines ,\
>             'file.dat' u 1:2 w points
fig/sample5.18
up