Gnuplot

Z Wikibooks, biblioteki wolnych podręczników.
Skocz do: nawigacji, wyszukiwania

gnuplot – program do tworzenia wykresów w 2 i 3 wymiarach.

Kolor[edytuj]

Gradient koloru[edytuj]

Sprawdzamy jaki mamy standardowy gradient kolorów ( tradycyjny pm3d (czarny-niebieski-czerwony-żółty ):

show palette

Otrzymujemy :

palette is COLOR
rgb color mapping by rgbformulae are 7,5,15
figure is POSITIVE
all color formulae ARE NOT written into output postscript file
allocating ALL remaining color positions for discrete palette terminals
Color-Model: RGB
gamma is 1.5     

Sprawdzamy jaki gradient ma aktualna paleta :

show palette gradient

Otrzymujemy :

 0. gray=0.0000, (r,g,b)=(0.0000,0.3922,0.0000), #006400 =   0 100   0
 1. gray=0.2500, (r,g,b)=(0.0000,1.0000,0.0000), #00ff00 =   0 255   0
 2. gray=0.2500, (r,g,b)=(1.0000,1.0000,0.0000), #ffff00 = 255 255   0
 3. gray=1.0000, (r,g,b)=(1.0000,0.0000,0.0000), #ff0000 = 255   0   0   

Wykres składowych koloru otrzymamy:

test palette
Standardowy gradient w Gnuplocie

Możemy to zapisać do pliku gif:

set terminal gif
set output 'p.gif'
test palette

Zobaczmy dokładniej jak zbudowany jest gradient.

rgbformulae[edytuj]

Jednym ze składników są funkcje odpowiadające za obliczenie każdej ze składowej koloru. ( mimo że nazwy składowych są R,G oraz B to ich znaczenie jest zależne od modelu koloru, tzn. w modelu HSV R będzie oznaczało H ). Mamy do dyspozycji 37 wbudowanych funkcji ponumerowanych od 0 do 36 ( liczby ujemne dają odwrócony gradient ). Możemy je wyświetlić:

show palette rgbformulae

Otrzymamy:

* there are 37 available rgb color mapping formulae:
0: 0               1: 0.5             2: 1
3: x               4: x^2             5: x^3
6: x^4             7: sqrt(x)         8: sqrt(sqrt(x))
9: sin(90x)       10: cos(90x)       11: |x-0.5|
12: (2x-1)^2       13: sin(180x)      14: |cos(180x)|
15: sin(360x)      16: cos(360x)      17: |sin(360x)|
18: |cos(360x)|    19: |sin(720x)|    20: |cos(720x)|
21: 3x             22: 3x-1           23: 3x-2
24: |3x-1|         25: |3x-2|         26: (3x-1)/2
27: (3x-2)/2       28: |(3x-1)/2|     29: |(3x-2)/2|
30: x/0.32-0.78125 31: 2*x-0.84       32: 4x;1;-2x+1.84;x/0.08-11.5
33: |2*x - 0.5|    34: 2*x            35: 2*x - 0.5
36: 2*x - 1
* negative numbers mean inverted=negative colour component
* thus the ranges in `set pm3d rgbformulae' are -36..36
Gorący gradient
Odwrócony gorący gradient


Standardowo są wybrane funkcje nr 7 dla składowej czerwonej, 5 dla składowej zielonej i 15 dla niebieskiej. Możemy wybrać inny zestaw, na przykład proponowany w dokumentacji zestaw "gorący" :

set palette rgbformulae 21,22,23

albo odwrócony gradient:

set palette rgbformulae -21,-22,-23

Definiowanie własnej palety kolorów[edytuj]

set palette defined (0 "dark-green", 1 "green", 1 "yellow", 4 "red")
test palette

Otrzymujemy nieciągły gradient.

Rysowanie danych z pliku[edytuj]

Przygotowanie pliku z danymi[edytuj]

Gnuplot może być używany jako uniwersalny program do rysowania przez inne specjalistyczne programy.

Przygotowanie pliku z danymi w C[edytuj]

Ten program tworzy w swoim katalogu roboczym plik tekstowy data.txt zawierający dane w formacie , który akceptuje gnuplot. Zawiera nagłówek poprzedzony znakiem "#", który przy rysowaniu jest ignorowany, oraz 2 kolumny liczb rozdzielone spacjami.

#include <stdio.h>
#include <stdlib.h>
int main(void) {
  int i;
  double x,y;
  char *output_filename="data.txt";
  FILE *output_file;
  output_file = fopen(output_filename, "w");  
  if (output_file  == NULL) {
    fprintf(stderr, "Nie moge otworzyc %s\n", output_filename);
    getchar();
    return 1;
 
  } else {
    /* nagłówek */
    fprintf(output_file,"%s %s      %s \n","#","x","y");
    y = 0.005;
    x = 0.0;
    /* 2 kolumny liczb rozdzielone spacjami */
    fprintf(output_file,"% 6.2f % 6.2f \n",x,y);
    for(i=0;i<5;++i) {
      x += y;
      /* 2 kolumny liczb rozdzielone spacjami */
      fprintf(output_file,"% 6.2f % 6.2f \n",x,y);
    }; /* for(i */
  }; /* if ((output_file ... else */
  fclose(output_file);
 
  fprintf(stderr,"file saved");
  getchar();
 
 
  return 0;
}

Zawartość pliku wygląda następująco:

# x      y 
 0.00   0.01 
 0.01   0.01 
 0.01   0.01 
 0.01   0.01 
 0.02   0.01 
 0.03   0.01

Przygotowanie pliku z danymi w MPSolve[edytuj]

W linii komend ( bez uruchomiania gnuplota) wprowadzmy polecenie z opcją -Og :

./unisolve -Og Data/umand31.pol >Results/data.txt

Rysowanie danych z pliku[edytuj]

Przykładowy wykres zawierający dane z pliku oraz wykresy dwóch funkcji

Uruchom gnuplot:

gnuplot

i w linii komend wprowadź polecenie:

plot "data.txt" 

W cudzysłowie jest nazwa pliku, może być poprzedzona ścieżką.