-не так Часто Задаваемые Вопросы - update 2010/12/26
| |
Введение в Gnuplot - Числовые данныеПодготовка файла данныхЗдесь рассмотрен пример построения графика по числовым данным, полученным с помощью вычислений. Чтобы их применить, результаты расчетов должны быть сохранены в файл данных, т.е. в обычный текстовый файл. Следующие программы вычисляют аппроксимирующую функцию Паде от y=exp(-x) #include <stdio.h> #include <math.h> int main(void); int main(void) { int i; double x,y,z1,z2,d; d = 0.1; x = 0.0; for(i=0;i<50;i++){ x += d; y = exp(-x); z1 = (6 - 2*x)/(6 + 4*x + x*x); z2 = (6 - 4*x + x*x)/(6 + 2*x); printf("% 6.2f % 11.4e % 11.4e % 11.4e\n", x,y,z1,z2); } return 0; } INTEGER I REAL*8 X,Y,Z1,Z2,D D = 0.1 X = 0.0 DO 10 I=1,50 X = X+D; Y = EXP(-X) Z1 = (6 - 2*X)/(6 + 4*X + X*X) Z2 = (6 - 4*X + X*X)/(6 + 2*X) WRITE(6,20) X,Y,Z1,Z2 10 CONTINUE 20 FORMAT(F6.2,3(1X,1PE11.4)) STOP END Эти программы дают результат с плавающей точкой. Первая колонка - координата X, вторая - прямое вычисление exp(-x), третья и четвёртая колонки приближённые вычисления аппроксимирующей функции Паде с погрешностями. Как вы видите, приближение применимо только к очень маленьким значениям X. 0.10 9.0484E-01 9.0484E-01 9.0484E-01 0.20 8.1873E-01 8.1871E-01 8.1875E-01 0.30 7.4082E-01 7.4074E-01 7.4091E-01 0.40 6.7032E-01 6.7010E-01 6.7059E-01 0.50 6.0653E-01 6.0606E-01 6.0714E-01 .... 4.60 1.0052E-02 -7.0237E-02 5.7632E-01 4.70 9.0953E-03 -7.2510E-02 6.0325E-01 4.80 8.2297E-03 -7.4627E-02 6.3077E-01 4.90 7.4466E-03 -7.6597E-02 6.5886E-01 5.00 6.7379E-03 -7.8431E-02 6.8750E-01 Построение пары (X,Y)Файл данных "output.dat" содержит вышеуказанные значения. Каждое значение X имеет 3 различных значения Y. Чтобы нарисовать график по значениям второй колонки, как от функции по первой колонки, используйте using символ при построении. gnuplot> plot "output.dat" using 1:2 with lines Стиль графика определяется с помощью with название стиля. В примере выше lines стиль задан тонкой линией, соединяющей точки. Существует несколько других видов линии, они пронумерованы: 1, 2, 3... Чтобы изменить вид линии, используйте: with lines номер. Если номер не задан, то gnuplot задаст автоматически номер от 1 до максимально возможного. Вот примеры некоторых стилей построения:
Рисуем несколько линийЧтобы нарисовать несколько линий одновременно, примените следующий способ: plot "A" using 1:2 with line, "B" using 1:2 with points, ... Иногда строка из таких команд может быть очень длинной. Если строка заканчивает символом '\', слудующая строка рассматривается как продолжение предыдущей. Не ставьте больше никаких символов после обратного слэша. gnuplot> plot "output.dat" using 1:2 with lines, \ > "output.dat" using 1:3 with lines,\ > "output.dat" using 1:4 with lines Значения второй линии, которая показана зелёным цветом, в основном отрицательны по X, поэтому по оси Y единичный отрезок равен -0.1 В легенде отображено имя файла и номера колонок, которые использовались для построения. Красная линия получена аналитической функцией, так что давайте изменим название первой линии в легенде на "Analytical". Зелёная линия получена по результатам аппроксимирующей функции Паде с L=1 и M=2, а синия линия - L=2, M=2. gnuplot> plot "output.dat" using 1:2 title "Analytical" with lines, \ > "output.dat" using 1:3 title "L=1, M=2" with lines,\ > "output.dat" using 1:4 title "L=2, M=1" with lines Вставка название графика и названия осейТеперь давайте подпишем оси X и Y. Название оси X - "x", а название оси Y - "y=exp(-x)". Чтобы установить такие названия, используем команды: set xlabel и set ylabel . Вы также можете вставить название графика: "Pade approximation" командой set title . gnuplot> set xlabel "x" gnuplot> set ylabel "y=exp(-x)" gnuplot> set title "Pade approximation" gnuplot> replot Размер графика изменяется, когда появляются заголовок и названия осей. Gnuplot определяет размер графика автоматически и отображает на экран, т.е. делает его меньше. Название оси Y "y=exp(-x)" расположено не слевой стороны от оси, а сверху, т.к. gnuplot не может повернуть текст, когда используется терминал X Window. Если использовать терминал Postscript, это возможность станет доступной. Если вы используете версию gnuplot новее 3.8, то название оси Y-axis так же должно поворачиваться . Изменение диапозонов осей X и YИзменить диапозон осей X и Y можно следующим способом: gnuplot> set xrange [0:2] gnuplot> set yrange [0:1] gnuplot> replot ДеленияДеления по оси X начинаются от 0, а интервал между ними устанавливается 0.5. Чтобы изменить деления используйте команду set {x|y}tics. Деления могут быть изменены тремя опциональными числами. Если после команды указано только одно число, например, set xtics 10, это число будет приращением. Если указано 2 числа, то первое - это начальное значение, второе - приращение. Если три, то последнее будет конечным значением. Вы также можете использовать промежуточные деления с помощью команды set m{x|y}tics n, где n число делений. gnuplot> set xtics 1 gnuplot> set mxtics 5 gnuplot> set ytics 0.5 gnuplot> set mytics 5 gnuplot> replot Готово !Теперь изменим терминал на Postscript и сохраним график. Сначала сменим терминал на "postscript" и зададим имя файла, куда нужно сохранить график. Перед тем как выйти из gnuplot, сохраните параметры и другие установки в файл (output.plt). gnuplot> set term postscript gnuplot> set output "output.ps" gnuplot> replot gnuplot> save "output.plt" gnuplot> quit Файл 'output.ps' может быть просмотрен через просмотрщик Postscript, такой как, 'gv' или 'ghostview', а также может быть распечатан с помощью Postscript printer. Следующее изображение - 'output.ps' открытое через ghostview. Когда вы построите график, первая линия будет красного цвета. Однако здесь она стала сплошной однотонной линией. Синия и зелёная линии стали пунктирными. Как вы можете заметить виды и типы линий и символов зависят от терминала, который вы используете. Чтобы узнать какой номер обозначает сплошуню, пунктирную, точечную и т.д. линии выполните команду test. Например при терминале X window вы полуите: gnuplot> set term x11 gnuplot> test |