GNUPLOT

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

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

О 2D Plot (No.2)

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

Я хочу обратить нулевые оси

Используется команда set {x|y}zeroaxis. Если нет возможноcти для начертания нулевой оси, рисуется пунктирная линия (линия типа 0). Опции ls line_style, lt line_type, lw line_width управляют стилем нулевой линии. В случае lt -1, ось принимает вид линии границ.

gnuplot> set xzeroaxis lt -1
gnuplot> set yzeroaxis
fig/sample5.5
up

Я хочу избавиться от малых баров, находящихся в верхней части бара погрешности

Малый бар находится в верхней (нижней) части бара погрешностей, когда построение содержит погрешности. Эти линии иногда мешают, когда количество данных велико. Чтобы избавиться от них, используется команда:

gnuplot> set bar 0

По умочанию этот параметр равен 1. Если подставить значение 0, то бар исчезнет.

Отметим, что даже если изменить размер точек set pointsize, длина бара не изменится. Поэтому, лучше в этот же момент и изменять размер бара.

gnuplot> set pointsize 3
gnuplot> set bar 3
up

Я хочу сделать буквы больше

Размер шрифта зависит от способа, которым была построенна фигура. Команды set label или set title отвечают за опции шрифта, так что можно использовать большие шрифты, если они необходимы. Но, как правило, трудно контролировать размеры шрифтов.

Если вы используете postscript-терминал, масштабирование шрифта будет легким. Вместо увеличения букв, уменьшается сама фигура. Поэтому у вас не будет проблем, даже если шрифт очень мал.

gnuplot> set size 0.3,0.3
fig/sample5.7a

С помощью команды, приведенной выше, размеры уменьшенны на 30 %. При использовании терминала Encapsulated PostScript фигура для печати увеличивается обратно. В этом довольно сложном случае можно свести размер set size к значениями 0.5-0.7 для получения удовлетворительного результата.


Если необходимо контролировать шрифт в определенной PostScript-фигуре, используют font опцию для метки, названия и устанавливают размер и форму шрифта. Опция set terminal определяет размер шрифта по умолчанию. В следующем примере, основной шрифт задан как Helvetica с размером 16pt, для названия и подписей осей используются разные шрифты.

gnuplot> set terminal postscript enhanced "Helvetica" 16
gnuplot> set title "Damping Function" font "Times-Roman,40"
gnuplot> set xlabel "X-AXIS" font "Helvetica,20"
gnuplot> set ylabel "Y-AXIS" font "Times-Italic,32"
gnuplot> plot exp(-x)
fig/sample5.7b

Приведенный выше пример не является удобным. Несмотря на то, что gnuplot и строит красивые фигуры, данные можно украсить и другими компонентами, например Tgif.

up

Я хочу соединить все точки с помощью кривой

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

В следующем примере для сравнения приведены функция сплайн и кривая Безье. Эти данные построены тремя командами: исходные данные в соответствии с символами, интерполяция сплайном кривой Безье.

gnuplot> plot "test.dat" using 1:2 notitle with points, \
>             "test.dat" using 1:2 smooth csplines \
>                                  title "spline" with lines,\ 
>             "test.dat" using 1:2 smooth bezier \
>                                  title "bezier" with lines
fig/sample5.8a

Сплайн опция csplines ладко соединяет все точки данных. Кривая Безье не является интерполяционной линией, она позволяет сглаживать данные. Функция сплайн так же может быть использована для сглаживания данных с помощью опции acsplines, с помощью которой можно сделать приближенную кривую данных. В приведенном выше примере значения X и Y необходимы, но только для построения приближенного графика кривой в отдельных узлах. Следующий пример показывает гладкую построенную с помощью функции спайн и кривой Безье.

gnuplot> plot "test.dat" using 1:2:3 notitle with yerrorbars, \
>             "test.dat" using 1:2:3 smooth acsplines \
>                                    title "acsplines" with lines,\ 
>             "test.dat" using 1:2   smooth bezier \
>                                    title "bezier"    with lines
fig/sample5.8b

Кривая Безье ведет поиск изменения данных, но сплайн выражает их циклическую тенденцию. Иногда необходимо оттянуть кривую "eye guide" в построении экспериментальных данных. Gnuplot делает это очень легко.

Значения данных необходимы, чтобы сделать приближение кривой - сплайном. Если значения для всех точек данных одинаковы, то можно дать равное значение 1.0 using 1:2:(1.0).

up

Я хочу стереть пункты, находящиеся на границе

Точки данных или линии около границы могут быть обрезаны. Команда set clip управляет обрезкой данных. Есть три типа обрезки данных: points, one и two. Следующий пример покажет различие между этими способами.

#  X     Y  
   1.0   1.0
   2.0   1.5
   3.0   2.0
   4.0   1.5
   5.0   1.0

Как недостаток, первая точка данных (X=1) и последняя (X=5) находятся в углах графика, а средняя точка (X=3) на главной границе. В следующем примере, точки данных, чтобы было видно лучше, увеличены командой set pointsize 10.

gnuplot> set pointsize 10
gnuplot> plot "test.dat" notitle with points
fig/sample5.9a

Когда обрезка задана, точки на границах (X=1, 3, и 5) исчезают.


gnuplot> set clip points
gnuplot> plot "test.dat" notitle with points
fig/sample5.9b

Gnuplot обрезает данные автоматически, если они располагаются очень близко с линиями границ. Например, даже если диапазон Y, упомянутый выше, увеличен до 2.1, точка данных X=3 обрезается все равно. Я не знаю этого критерия --- какая точка обрезается, а какая остается.

Следующий тип обрезки set clip one, определяющий поведение линий около границы. Когда есть 2 точки: одна за графиком, другая внутри,- и эти 2 точки соединены линией, пересекающей границу, есть 2 выбора контроля за ней. Первый должен чертить линию от внутренней точки до границы и обрезать ее там (по умолчанию). Альтернативно такие линии могут быть стерты командой set noclip.


Когда функция отображена, gnuplot вычисляет значения X,Y в определенных точках, которые заданы sampling rate (100, по умолчанию), и эти точки соединены маленькими линиями. Так Gnuplot рисует усеченные линии вместо кривой. Если некоторые точки за границей графика, линия пересекает ее. Команда set clip one определяет, что линия стерта (noclip) или, что линия частично изображена от конечной точки до границы (clip).

Функция y=sin(x) изображена в фигуре и диапазон Y находится [0:1], кривая пересекает ось X несколько раз. Функция изображается with linespoints, когда точки отображенные символами фактически вычислены gnuplot.

gnuplot> set clip one
gnuplot> plot sin(x) with linespoints
gnuplot> set noclip one
gnuplot> replot
fig/sample5.9c
clip one
fig/sample5.9d
noclip one

Последний тип обрезки set clip two . Так же контролирует обрезание линии, пересекающей границу, но для случаев, когда точки за графиком. По умолчанию clip. См. следующий пример.

gnuplot> set yrange [-0.5:0.5]
gnuplot> set samples 10
gnuplot> set clip two
gnuplot> plot sin(x) with linespoints
gnuplot> set noclip two
gnuplot> replot
fig/sample5.9e
clip two
fig/sample5.9f
noclip two
up