четвер, 27 грудня 2007 р.

Візуалізація матричних даних з допомогою Gnuplot

Нещодавно займаючись своїми науковими справами я стикнувся з необхідністю наглядної візуалізації даних заданих у матричній формі. Ну наприклад у нас є двовимірний масив з даними згенерованими після якихось обчислень, тобто звичайнісінька матриця, досить великих розмірів. Значення елементів масиву записано у зивчайний текстовий файл input.dat де елементи різних стовпців відокремлюються один від одного пробілами, ну а рядки відповідно записані як є.

1.0000 0.9982 0.9825 0.9624 0.9583 .......
0.9982 1.0000 0.9918 0.9768 0.9735 .......
0.9825 0.9918 1.0000 0.9962 0.9948 .......
.......


Тепер запускаємо gnuplot у інтерактивному режимі

bum@impress:~/Projects/RelMatAn/1$ gnuplot

G N U P L O T
Version 4.2 patchlevel 0
last modified March 2007
System: Linux 2.6.22-14-generic

Copyright (C) 1986 - 1993, 1998, 2004, 2007
Thomas Williams, Colin Kelley and many others

Type `help` to access the on-line reference manual.
The gnuplot FAQ is available from
http://www.gnuplot.info/faq/

Send comments and help requests to
Send bug reports and suggestions to


Terminal type set to 'x11'
gnuplot>


Отже, gnuplot чекає на команду. Ну, що ж, почнемо з простого:
splot "input.dat" matrix with lines

У результаті відкриється вікно з нашим графіком:



У моєму випадку я використав для побудови графіка згенеровану моєю програмою на FreePascal кореляційну матрицю, яка використовується при дослідженні надійності елементів будівельних конструкцій. Але звичайно ж дані можуть бути будь-якими, зверніть лише увагу на параметр matrix, він є дуже важливим оскільки дані у вхідному файлі задані саме у вигляді матриці.

А тепер розфарбуємо наш графік:

set pm3d
splot "input.dat" matrix with pm3d


Ось, що ми тепер отримаємо:



Можна також сумістити графік намальований лініями та кольорову карту таким чином:

set pm3d at b
splot "input.dat" matrix with lines




Звичайно 3D графік будучи вставлений у звіт чи статтю завжди виглядає досить ефектно, проте часто зручніше використовувати звичайні плоскі кольорові карти:

set pm3d map
splot "input.dat" matrix with pm3d




Часто буває потрібно виділити на графіку лише значення нижчі або вищі за якийсь критерій (якусь площину перерізу), а інші відкинути. Для цього можна використати можливість задавання діапазону відображення по осям. Наприклад:

set pm3d
set zrange [0.8:0.97]
splot "input.dat" matrix with pm3d




Звісно ж для того щоб мати змогу використовувати побудовані графіки у власних документах, потрібно ці графіки зберегти у файл. Для цього на початку потрібно дати команди:

set term postscript eps enhanced
set output "output.eps"


Після цього результат буде не виводитися на екран безпосередньо, а писатися у файл. Само собою зрозуміло, що всі вищенаведені команди можна згрупувати у один файл і передаючи його gnuplot використовувати останній у пакетному режимі. Це дуже зручно.

Ось наразі і все, що я хотів написати. Багато додадткової інформації про gnuplot можна знайти ось на цьому чудовому сайті японця Kawano:
http://t16web.lanl.gov/Kawano/gnuplot/index-e.html

Реклама

создание сайта, бесплатный сервис.,офисный переезд, переезды любой сложности по Москве и области.,строительство деревянных домов и коттеджей.,запчасти Chery,pergo,

Реклама

создание сайта, бесплатный сервис.,офисный переезд, переезды любой сложности по Москве и области.,строительство деревянных домов и коттеджей.,запчасти Chery,pergo,

1 коментар:

  1. Дякую за статтю, графіки гарні, я нещодавно також цим продуктом цікавився. Проте не зміг знайти можливості (може, не надто наполегливо шукав), щоб комірки відображалися кольором, який залежить не від параметра z, а від іншого. Наприклад, є карта рельєфу. В даному випадку колір комірки залежить від висоти, а мені треба, напр. від середньої температури, яка задається у вигляді матриці такої ж розмірності.

    ВідповістиВидалити