Часть 1. введение в gnuplot. формат ввода и вывода данных

Intro

Gnuplot.py is a Python package that interfaces to gnuplot, the popular open-source
plotting program. It allows you to use gnuplot from within Python to
plot arrays of data from memory, data files, or mathematical
functions. If you use Python to perform computations or as ‘glue’ for
numerical programs, you can use this package to plot data on the fly
as they are computed. And the combination with Python makes it is
easy to automate things, including to create crude ‘animations’ by
plotting different datasets one after another.

Commands are communicated to gnuplot through a pipe and data
either through the same pipe (as «inline» data), through FIFOs (named
pipes), or through temporary files. It has been developed under Unix
and is known to work under various forms of Unix (including Linux), MS
Windows, MacOS, and Mac OS X. There is now also preliminary support
for running Gnuplot.py under Jython/Java.

This package has an object-oriented design that allows the user
flexibility to set plot options and to run multiple gnuplot sessions
simultaneously. If you are more ambitious, it is not difficult to add
entirely new types of plottable items by deriving from the
PlotItem‘ class.

The package includes a demonstration that can be run by typing
python demo.py‘.

Documentation

The quickest way to learn how to use Gnuplot.py is to install it
then run the simple demonstration by typing ‘python demo.py‘,
then to look at the demo.py file to see the commands that
create the demo. One of the examples is probably similar to what you
want to do.

Don’t forget to read the Gnuplot.html, README.txt and FAQ.txt
files in the Gnuplot.py distribution.

HTML documentation for the Python classes is included in the doc/
directory of the distribution and is also available online. This documentation is extracted
automatically from the package’s docstrings using happydoc and is
known to have some formatting problems. Alternatively, you can look
at the docstrings yourself by opening the python files in an
editor.

Finally, there is a mailing list
for Gnuplot.py users. For more information about subscribing to the
list or viewing the archive of old articles, please click here.

To get good use out of Gnuplot.py, you will want to know something
about gnuplot, for which a good source is the gnuplot help (run
gnuplot then type ‘help’, or read it online at the gnuplot website).

Команды для выхода, чтения командного файла, сохранения параметров

Команды exit или quit закроют gnuplot.
При выходе из gnuplot, все настройки сбрасываются. Чтобы сохранить текущие настройки
используйте команду save, сопровождаемую именем файла, в который будут сохранены параметры
и функции, который вы определили, сохранены. Имя файла задаётся произвольно,
но если то же самое имя существует в текущем каталоге, gnuplot переписывает внутренние параметры
в том файле без предупреждений.

gnuplot> save "savefile.plt"

Сохранённый файл — это обычный текстовый файл.
Вы можете редактировать его содержание с помощью текстового редактора.
Чтобы снова простроить график, используя данный файл, используйте команду
load "savefile.plt" в строке команд gnuplot или запустите gnuplot и напишите имя файла данных как параметр командной строки.

Командная строка gnuplot

gnuplot> load "savefile.plt"

Оболочка gnuplot

 % gnuplot savefile.plt

Различие этих двух методов: после выполнения команды load,
вы возвращаетесь обратно к командной строке gnuplot> после того, как gnuplot прочитает файл.
Если вы задали имя файла как параметр командной строки (2ой метод), gnuplot прочитает файл, и вы вернётесь обратно в оболочку.
Последний режим называется

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

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

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

gnuplot> set size 0.3,0.3

С помощью команды, приведенной выше, размеры уменьшенны на 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)

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

Запуск процесса gnuplot из программы на C/C++

В предыдущем примере мы использовали неименованный канал, теперь создадим канал именованный. Начнем с примера, работающего в Unix/Linux:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *gp = popen("gnuplot -persist","w"); // gp - дескриптор канала

    if (gp == NULL)
    {
        printf("Error opening pipe to GNU plot.\n");
        exit();
    }

    fprintf(gp, "plot sin(x)\n");
    pclose(gp);

    return ;
}

Любопытно, что используя при компиляции стандарт , выдается предупреждение о неявной декларации и .

Процесс в Unix/Linux открывается функцией . В результате будет создан канал (), запись в который выполняется при помощи . Закрывается процесс функцией .

Рассмотрим кроссплатформенный пример создания процесса gnuplot. Для каждой операционной системы используются свои функции открытия/закрытия процесса:

#include <iostream>
#include <cstdio>

// Для Windows нужно указать путь к исполняемому файлу gnuplot,
// например: "c:Program Files (x86)gnuplotbinpgnuplot.exe"
#ifdef WIN32
    #define GNUPLOT_NAME "pgnuplot -persist"
#else
    #define GNUPLOT_NAME "gnuplot -persist"
#endif

int main()
{
    #ifdef WIN32
        FILE *pipe = _popen(GNUPLOT_NAME, "w");
    #else
        FILE *pipe = popen(GNUPLOT_NAME, "w");
    #endif

    if (pipe != NULL)
    {
        fprintf(pipe, "plot '-' with lines\n");
        for(int i = ; i < 10; i++)
            fprintf(pipe, "%d\n", i);
        fprintf(pipe, "%s\n", "e");
        fflush(pipe);

        // ожидание нажатия клавиши
        std::cin.clear();
        std::cin.ignore(std::cin.rdbuf()->in_avail());
        std::cin.get();

        #ifdef WIN32
                _pclose(pipe);
        #else
                pclose(pipe);
        #endif
    }
    else
        std::cout << "Could not open pipe" << std::endl;
return ;
}

Результат (наконец-то не синусоида!):

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

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

Сплайн опция 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

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

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

Использование каналов

Каналы в Unix/Linux позволяют перенаправить вывод команд и программ на вход gnuplot. В простейшем случае, с помощью команды можно передать в gnuplot ее же собственную команду. Например:

echo "plot sin(x)" | gnuplot -persist

выводит график синусоиды

Опция нужна, чтобы задержать окно gnuplot на экране после окончания построения графика.

gnuplot позволяет строить графики на основе данных, вводимых в командной строке

plot '-' using ... with ...
x1 y1
x2 y2
x3 y3
...
e

Псевдофайл данных обозначается как ; символ обозначает конец файла (EOF).

Теперь сформируем команду gnuplot, строящую график по данным из псевдофайла, и получим сами данные

#include <stdio.h>
#include <math.h>

const double pi = 3.14;

int main()
{
    const double npoints = 200;
    const double step = 4 * pi  npoints;

    printf("%s\n", "plot '-' using 1:2 with lines"); // Рисовать график по данным
                                                     // из командной строки
    for (int i = ; i < npoints+1; i++)              // Получаем данные
    {
        double x = -2 * pi + i * step;
        double y = sin(x);
        printf("%f\t%f\n", x, y);                    
    }

    printf("%s\n", "e");                              // Закрыть псевдофайл
}

Направим результат работы программы на вход gnuplot

./tttest | gnuplot -persist

и получим уже знакомый по первому рисунку результат.

Пыль веков

  • ► 

    (4)

    ► 

    июля
    (1)

    ► 

    июня
    (1)

    ► 

    февраля
    (1)

    ► 

    января
    (1)

  • ► 

    (22)

    ► 

    декабря
    (1)

    ► 

    ноября
    (1)

    ► 

    октября
    (2)

    ► 

    сентября
    (2)

    ► 

    августа
    (1)

    ► 

    июля
    (1)

    ► 

    июня
    (2)

    ► 

    мая
    (2)

    ► 

    апреля
    (3)

    ► 

    марта
    (3)

    ► 

    февраля
    (2)

    ► 

    января
    (2)

  • ► 

    (29)

    ► 

    декабря
    (3)

    ► 

    ноября
    (2)

    ► 

    октября
    (2)

    ► 

    сентября
    (2)

    ► 

    августа
    (4)

    ► 

    июля
    (3)

    ► 

    июня
    (2)

    ► 

    мая
    (2)

    ► 

    апреля
    (2)

    ► 

    марта
    (2)

    ► 

    февраля
    (2)

    ► 

    января
    (3)

  • ► 

    (27)

    ► 

    декабря
    (2)

    ► 

    ноября
    (3)

    ► 

    октября
    (2)

    ► 

    сентября
    (2)

    ► 

    августа
    (2)

    ► 

    июля
    (2)

    ► 

    июня
    (2)

    ► 

    мая
    (2)

    ► 

    апреля
    (3)

    ► 

    марта
    (3)

    ► 

    февраля
    (2)

    ► 

    января
    (2)

  • ► 

    (31)

    ► 

    декабря
    (3)

    ► 

    ноября
    (2)

    ► 

    октября
    (3)

    ► 

    сентября
    (3)

    ► 

    августа
    (4)

    ► 

    июля
    (3)

    ► 

    июня
    (2)

    ► 

    мая
    (2)

    ► 

    апреля
    (3)

    ► 

    марта
    (2)

    ► 

    февраля
    (2)

    ► 

    января
    (2)

  • ► 

    (35)

    ► 

    декабря
    (2)

    ► 

    ноября
    (3)

    ► 

    октября
    (2)

    ► 

    сентября
    (3)

    ► 

    августа
    (3)

    ► 

    июля
    (2)

    ► 

    июня
    (3)

    ► 

    мая
    (3)

    ► 

    апреля
    (5)

    ► 

    марта
    (4)

    ► 

    февраля
    (2)

    ► 

    января
    (3)

  • ► 

    (64)

    ► 

    декабря
    (6)

    ► 

    ноября
    (4)

    ► 

    октября
    (3)

    ► 

    сентября
    (4)

    ► 

    августа
    (5)

    ► 

    июля
    (6)

    ► 

    июня
    (7)

    ► 

    мая
    (7)

    ► 

    апреля
    (6)

    ► 

    марта
    (6)

    ► 

    февраля
    (4)

    ► 

    января
    (6)

  • ► 

    (91)

    ► 

    декабря
    (7)

    ► 

    ноября
    (7)

    ► 

    октября
    (5)

    ► 

    сентября
    (11)

    ► 

    августа
    (5)

    ► 

    июля
    (8)

    ► 

    июня
    (11)

    ► 

    мая
    (6)

    ► 

    апреля
    (6)

    ► 

    марта
    (5)

    ► 

    февраля
    (12)

    ► 

    января
    (8)

  • ► 

    (59)

    ► 

    декабря
    (10)

    ► 

    ноября
    (9)

    ► 

    октября
    (9)

    ► 

    сентября
    (9)

    • ► 

      августа
      (13)

    ► 

    июля
    (9)

Installation

More detailed installation instructions are contained in
README.txt.

Before you can use Gnuplot.py, you will need working versions of

  • the gnuplot program,
  • Python (version 2.2 or
    later), and
  • the «NumPy» Numeric
    computation package for Python.

If you want to run under MS Windows, make sure you have
pgnuplot.exe (see the README.txt file for details).

To install Gnuplot.py:

  1. Download
    either or .
  2. Gunzip and untar (or unzip) it, which will create a directory
    called .
  3. Refer to README.txt in that directory for further
    instructions. Usually it should be enough to type .

You can also access the latest Gnuplot.py sources via Subversion.
Click here
for more information.

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

Точки данных или линии около границы могут быть обрезаны. Команда 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

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

gnuplot> set clip points
gnuplot> plot "test.dat" notitle with points

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 находится , кривая пересекает ось X несколько раз.
Функция изображается with linespoints, когда точки отображенные символами фактически вычислены gnuplot.

gnuplot> set clip one
gnuplot> plot sin(x) with linespoints
gnuplot> set noclip one
gnuplot> replot
clip one
noclip one

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

gnuplot> set yrange 
gnuplot> set samples 10
gnuplot> set clip two
gnuplot> plot sin(x) with linespoints
gnuplot> set noclip two
gnuplot> replot
clip two
noclip two

Класс-обертка для работы с gnuplot

// gnuplot.h
#ifndef _GNUPLOT_H_
#define _GNUPLOT_H_

#include <cstdio>
#include <string>
#include <iostream>

#ifdef WIN32
    #define GNUPLOT_NAME "pgnuplot -persist"
#else
    #define GNUPLOT_NAME "gnuplot -persist"
#endif

using std::string;
using std::cerr;

class Gnuplot
{
public
    Gnuplot() ;
    ~Gnuplot();
    void operator ()(const string & command); // отправить команду gnuplot

protected
    FILE *gnuplotpipe;
};

Gnuplot::Gnuplot()
{
    #ifdef WIN32
        gnuplotpipe = _popen(GNUPLOT_NAME, "w");
    #else
        gnuplotpipe  = popen(GNUPLOT_NAME, "w");
    #endif

    if (!gnuplotpipe)
    {
        cerr << ("Gnuplot not found !");
    }
}
Gnuplot::~Gnuplot()
{
    fprintf(gnuplotpipe,"exit\n");

    #ifdef WIN32
       _pclose(gnuplotpipe);
    #else
        pclose(gnuplotpipe);
    #endif
}
void Gnuplot::operator()(const string & command)
{
    fprintf(gnuplotpipe,"%s\n",command.c_str());
    fflush(gnuplotpipe); //без fflush ничего рисоваться не будет
};

#endif // #ifndef _GNUPLOT_H_

Пример использования созданного класса:

#include <iostream>
#include "gnuplot.h"

int main()
{
    Gnuplot plot;

    plot("plot sin(x)");
    std::cin.get();

    plot("plot cos(x)");
    std::cin.get();
}

Команды для присвоения, определения функции, вычислений

Вы можете использовать gnuplot как простой калькулятор. Чтобы присвоить значение в какую-то переменную наберите: «перменная = значение» в строке gnuplot.
Чтобы увидеть значение, содержащееся в переменной, используйте команду print .

gnuplot> a=10
gnuplot> print a
10

«Переменная = выражение»: присвоение значение выражения в переменную
.

gnuplot> a=1+2*sqrt(3)
gnuplot> print log(a)
1.49606798806764

Опеределяемая пользователем переменная может использоваться для команд plot .
Gnuplot содержит округлённое значение числа Пи в «pi». Чтобы построить график a*sin(x)
от -2Пи до +2Пи, гдe a=0.5, нужно дать следующие команды:

gnuplot> set xrange 
gnuplot> a=0.5
gnuplot> plot a*sin(x)

Вы можете определить свою фукнцию. Например, функция f(x)=sin(x)*cos(x) определяется следующим образом:

gnuplot> f(x)=sin(x)*cos(x)

Функция, опредённая пользователем выше, может упоминаться как «f (x)». Вы также можете
использовать параметры\переменные в своих функциях.

gnuplot> f(x)=a*sin(x)*cos(x)

Эта функция содержит параметр «a», который определён пользователем и функция зависит от этого параметра.

Simple data

At first we will have a look at a data file. This can be a text file containing the datapoints as columns.

# plotting_data1.dat
# X   Y
  1   2
  2   3
  3   2
  4   1

You can plot these by writing

# Set linestyle 1 to blue (#0060ad)
set style line 1 \
    linecolor rgb '#0060ad' \
    linetype 1 linewidth 2 \
    pointtype 7 pointsize 1.5

plot 'plotting_data1.dat' with linespoints linestyle 1

Here we also set the point type (pt) and the point size (ps) to use. For the available point styles you can have a look at the ps_symbols file. The resulting plot is presented in Fig. 1.

Fig. 1 Plot of the data from plotting_data1.dat (code to produce this figure)

If you have data points that aren’t continuous you can simply tell gnuplot this by inserting one blank line between the data.

# plotting_data2.dat
# X   Y
  1   2
  2   3

  3   2
  4   1

Fig. 2 Plot of the data from plotting_data2.dat as a non-continuous line (code to produce this figure)

If you want to use another color for the second data and still want to have it in the same file, you can insert a second blank line. You then have to index the data block starting by 0.

# plotting_data3.dat
# First data block (index 0)
# X   Y
  1   2
  2   3


# Second index block (index 1)
# X   Y
  3   2
  4   1
# Set first two line styles to blue (#0060ad) and red (#dd181f)
set style line 1 \
    linecolor rgb '#0060ad' \
    linetype 1 linewidth 2 \
    pointtype 7 pointsize 1.5
set style line 2 \
    linecolor rgb '#dd181f' \
    linetype 1 linewidth 2 \
    pointtype 5 pointsize 1.5

plot 'plotting_data3.dat' index 0 with linespoints linestyle 1, \
     ''                   index 1 with linespoints linestyle 2

As you can see, we have added another color and point type and plotted the two datasets by using index and separated the plots by a comma. To reuse the last filename we can just type . The result is shown in Fig. 3.

Fig. 3 Plot of the data from plotting_data3.dat in two different styles (code to produce this figure)

Credits

The Gnuplot.py package was written by Michael Haggerty.

The package was inspired by and partly derived from the Gnuplot.py
module written by Konrad Hinsen.

Berthold Höllmann submitted a setup.py file to be
used with distutils.

Craig Schardt and Francois Ladouceur contributed changes that
enable Gnuplot.py to work under MS-Windows. Tony Ingraldi contributed
changes for the Macintosh.

Jannie Hofmeyr submitted a fix for Windows under Python 2.0.

Matthew Fulmer contributed a patch to add the filename
argument to Data and GridData.

Thanks also to many other users who have submitted suggestions,
bug fixes, and other feedback.

Data with errors

Another common task is to plot data with errorbars. Therefore we use the battery.dat file from gnuplots demo files that contains data about the dependence of the power of the battery on the resistance.
Here we want not only to plot the data, but also show the error for the y value (the data is stored in the format: x, y, xerror, yerror).

set xrange 
set yrange 
set format y '%.0s'
plot 'battery.dat' using 1:2:4 with yerrorbars linestyle 1, \
     ''                        with lines linestyle 1

The power values are stored in Watt in the data file, but only has values lower than 1. That’s why we want to use mW as unit. Therefore we set the format option to tell gnuplot to use “mantissa to base of current logscale”, see gnuplot’s documentation. Then in the plot command tells gnuplot which columns from the data file it should use. Since we want to plot the y errors and the data we need three columns in the first line of the plot command. Using the plotting style it is not possible to combine the points by a line. Therefore we add a second line to the plot command to combine the points with a line. This will give us the resulting Fig. 4.

Fig. 4 Plot of the data from battery.dat with y errors (code to produce this figure)

We can avoid the command in the last plot by directly manipulating the input data:

set yrange 
plot 'battery.dat' using 1:($2*1000):($4*1000) with yerrorbars linestyle 1

For achieving this we have to set brackets around the expression and reference the column data with .

In the last plot we will add theoretical data and a legend to the graph:

# Legend
set key at 50,112
# Theoretical curve
P(x) = 1.53**2 * x/(5.67+x)**2 * 1000
plot 'battery.dat' using 1:($2*1000):($4*1000) \ 
                   title 'Power' with yerrorbars linestyle 2, \
     P(x) title 'Theory' with lines linestyle 1

Generally the legend is enabled by the command. In addition to that, its position can be specified by etc. You can also set it directly to one point as we have done it here in order to have enough space between the key and the tics. The keyword within the plot command specifies the text to be displayed in the legend.

Fig. 5 Plot of the data from battery.dat with y errors and a theoretical curve (code to produce this figure)

Команды для изменения переменных и параметров

Существует много параметров, которые отвечают за внешний вид вашего графика.
Вы можете изменять их с помощью команды set.

gnuplot> help set
 The `set` command can be used to sets _lots_ of options.  No screen is
 drawn, however, until a `plot`, `splot`, or `replot` command is given.

 The `show` command shows their settings;  `show all` shows all the
 settings.

 If a variable contains time/date data, `show` will display it according to
 the format currently defined by `set timefmt`, even if that was not in effect
 when the variable was initially defined.

Subtopics available for set:
      angles         arrow          autoscale      bar
      bmargin        border         boxwidth       clabel
      clip           cntrparam      contour        data
      dgrid3d        dummy          encoding       format
.....
      zero           zeroaxis       zlabel         zmtics
      zrange         ztics

Вот несколько примеров, чтобы изменить параметры. Во-первых, написать какой-либо текст для xlabel и ylabel.
Текст должен быть в кавычках одинарных или двойных. Далее, определите диапозон осей X и Y. Это можно сделать через изменение параметров «xrange» и «yrange», указан их как показано ниже:

gnuplot> set xlabel "X-AXIS"
gnuplot> set ylabel "Y-AXIS"
gnuplot> set xrange 
gnuplot> set yrange 
gnuplot> plot sin(x)

Если терминал не задан, то gnuplot покажет график в отдельном окошке. Команда set terminal поможет изменить терминал, например, на postscript или jpeg и т.д.
Gnuplot строит множество графиков, различными способами,
поэтому и не зависит от платформы (но качество графика все еще зависит терминала).
Терминал, которые ваш gnuplot может обрабатывать могут быть показаны командой set terminal.

gnuplot> set terminal

Available terminal types:
          unknown  Unknown terminal type - not a plotting device
            table  Dump ASCII table of X Y  values to output
            linux  Linux PC with (s)vgalib
             ....
             tpic  TPIC -- LaTeX picture environment with tpic \specials
         pstricks  LaTeX picture environment with PSTricks macros
          texdraw  LaTeX texdraw environment
               mf  Metafont plotting standard

gnuplot> set terminal postscript
Terminal type set to 'postscript'
Options are 'landscape noenhanced monochrome dashed defaultplex "Helvetica" 14'

Gnuplot построит графика в формате Postscript, где применена команда set terminal postscript.
Если название файла и расширение в который вы хотите сохранить
полученный график не указаны, то график будет выведен на экран.
Команда set output позволяет изменить название файла и расширение в который вы хотите сохранить полученный график.

gnuplot> set output "plot.ps"
gnuplot> plot sin(x)

Команды для построения графиков

Существует две основные команды для построения графиков plot и
splot. Первый используется для построения 2-мерного графика, а
второй для 3x-мерного. Gnuplot строит графики любых функций, по числовым данным, хранящихся в файле.
Чтобы построить график функции, используйте команду plot/splot с диапазоном Оси X
(или X и Y для 3х-мерного) и функцию. Вы можете опустить параметры диапазона.
Вот пример графика y=sin (x), который часто встречается во многих ресурсах по gnuplot.

gnuplot> plot sin(x)

Это 2-мерный график. Рамка, которая нарисована толстой линией называется «границей».
У осей X и Y есть деления и цифровые подписи (значения), которые написаны точно под ними
Расстояния между главными делениями могут быть поделены второстепенными.
Вы можете подписать названия оси X или(и) Y. Название оси X «xlabel» показывают ниже границы оси X,
в то время как положение «ylabel» зависит от Вашего терминала вывода. Если ваш терминал может перевернуть буквы,
то название(«ylabel») оси будет повёрнуто на 90 градусов и отобразится с левой стороны от оси Y,
в противном случае оно будет отображено на вершине оси Y.

Если диапазоны оси X и Y не определены, gnuplot определяет соответствующие значения для них автоматически.
В примере выше не указан диапозон оси X, который определяется от -10 до +10, и диапазон оси Y также был определен автоматически.
Чтобы установить диапозон оси X от 0 до 5, нужно указать .

gnuplot> plot  sin(x)

Оцените статью
Рейтинг автора
5
Материал подготовил
Андрей Измаилов
Наш эксперт
Написано статей
116
Добавить комментарий