Gnuplot ile Grafik Çizimi ve EPS-II

Verileri görselleştirmek ve analiz etmek, birçok alanda önemli bir görevdir. Bu görevi yerine getirmek için birçok grafik oluşturma aracı bulunmaktadır. Bu blog yazısında, GNUPLOT adlı güçlü bir araçtan bahsedeceğiz. GNUPLOT, verileri grafiklere dönüştürmek için kullanılan bir komut satırı aracıdır. Hem basit hem de karmaşık grafikler oluşturmak için geniş bir işlevselliğe sahiptir.

GNUPLOT, birçok veri formatını destekler ve kullanıcı dostu bir komut satırı arayüzüne sahiptir. Verileri içeren dosyaları okuyarak, çizgi grafikleri, sütun grafikleri, nokta grafikleri, histogramlar, yüzey grafikleri gibi farklı grafik türlerini oluşturabilir. Ayrıca, eksenlerin ölçeğini, renkleri, etiketleri, başlıkları ve diğer grafik özelliklerini özelleştirme imkanı sunar.

GNUPLOT’ın avantajlarından biri, birçok işletim sistemi için mevcut olmasıdır. Linux, Windows ve macOS gibi yaygın kullanılan işletim sistemlerinde çalışabilir. GNUPLOT, açık kaynak bir yazılımdır ve sürekli olarak geliştirilmektedir, bu da kullanıcıların güncellemelere erişebilmesini sağlar. Verileri grafiklere dönüştürmek ve analiz etmek için GNUPLOT’ı kullanmak, veri görselleştirmesi konusunda etkili bir çözüm sunar. Hem basit hem de karmaşık grafikler oluşturabilme yeteneği sayesinde, kullanıcıların ihtiyaçlarına uygun çözümler sunar. GNUPLOT’ın esneklik, geniş grafik seçenekleri ve kullanıcı dostu arayüzü, veri analizi ve görselleştirmesi için güçlü bir araç olarak tercih edilmesini sağlar.

red = "#FF0000"
green = "#0000ff"
blue = "#00ff00"
skyblue = "#ff00ff"
son = "#800000"

set yrange [150:330]
set xrange [0.5:4]
set style data histogram
set style histogram cluster gap 1.5
set style fill solid border -1
set boxwidth 1.0

set xtics font 'Helvetica, 18'
set xlabel 'Proxy JRC' font 'Helvetica, 20'
set ylabel 'Average Time for Identity Verification (second)' font 'Helvetica, 20'
set grid ytics

set title 'A Network with 20 Nodes' font 'Helvetica, 30'

plot '20node_data_authentication' using 2:xtic(1) ti 'Centralized Authentication' fs pattern 1 lc rgb red,
'' using 3:xtic(1) ti 'Oracle' fs pattern 2 lc rgb green,
'' using 4:xtic(1) ti 'Cost Function 1' fs pattern 3 lc rgb blue,
'' using 5:xtic(1) ti 'Cost Function 2' fs pattern 4 lc rgb skyblue

set terminal postscript eps enhanced color solid linewidth 0.8 'Helvetica, 15'
set output '20node_data_authentication_temp.eps'

Yukarıdaki kod, GNUPLOT kullanarak bir histogram grafiği oluşturmak için bir örnektir. Aşağıda kodun adım adım açıklaması bulunmaktadır:

  1. Renk Değişkenleri:
    İlk olarak, grafikte kullanılacak renkleri tanımlamak için değişkenler oluşturulmuştur. Bu örnekte, “red”, “green”, “blue”, “skyblue” ve “son” adında beş renk değişkeni tanımlanmıştır.
  2. Eksen Ayarları:
    Grafikteki y ve x eksenlerinin sınırları ve görüntülenecek veri aralığı ayarlanmıştır. “set yrange” ve “set xrange” komutları ile y ve x eksenlerinin sınırları belirlenmiştir.
  3. Grafik Stili:
    Grafiğin histogram stiliyle çizilmesi için “set style data histogram” komutu kullanılmıştır. Ayrıca, çubuklar arasındaki boşluk, dolgu stili ve kenarlık ayarları da yapılmıştır.
  4. Eksen Etiketleri ve Başlık:
    X ve y eksenlerinin etiketleri “set xlabel” ve “set ylabel” komutlarıyla belirlenmiştir. Ayrıca, grafik başlığı “set title” komutu ile ayarlanmıştır.
  5. Veri Çizimi:
    Grafiğin çizimini yapmak için “plot” komutu kullanılmıştır. Bu komutta, çizilecek verilerin dosyadan okunması ve her bir veri setinin rengi, dolgu stili ve başlığı belirtilmiştir.
  6. Çıktı Ayarları:
    Grafiğin çıktısını almak için “set terminal” ve “set output” komutları kullanılmıştır. Bu örnekte, çıktı EPS formatında bir dosyaya kaydedilmiştir.

Son olarak, “replot” komutuyla grafiğin çizimi gerçekleştirilmiştir.

20node_data_authentication adlı veri dosyası;

Output;

Bu kod, “20node_data_authentication” adlı veri dosyasından verileri okuyarak, farklı veri setlerini histogram grafiği olarak çizmektedir. Grafikteki renkler, dolgu stilleri ve başlıklar, veri setlerini ayırt etmek için kullanılmaktadır.

Gnuplot ile Grafik Çizimi ve EPS

Gnuplot ile Latex metin editöründe harika işler çıkarabiliriz.

Aşağıda makale yazarken kullandığım bir kod bloğu mevcuttur. Bunun için bir dosyadan değerleri okuyup kod bloğuna girdi olarak vermekteyiz. Ayrıca Linux üzerinde derlediğim için terminal üzerinden gnuplot yazılımının kurulması gerekmektedir.

X 	Merkezi 	Kahin 		Algoritma 1	Algoritma 2	Algoritma 3
70,	57.57,		62.77,		57.85,		60.45,		61.998
80,	58.72,		63.73,		58.91,		61.77,		63.51
90,	60.56,		65.80,		61.25,		62,93,		65.14
100,	61.08,		69.19,		62.29,		65.24,		68.70

Yukarıda görülen veriler, pdr_data içindeki çıktıları ifade etmektedir. Buradan anlaşılacağı üzere X değerleri koodinat sistemindeki x eksenini ifade etmektedir. Yukarıdan aşağı doğru bakıldığında herbir kolonun yeni bir doğruyu ifade ettiği görülebilir. Linux’da herşey bir dosya olduğundan terminal yardımı ile dosyanın bulunduğu konuma gidelim.

Komut satırından gnuplot yazdıktan sonra karşımıza bir kod yazma alanı çıkmaktadır.

Kod bloğundan veri çağırmak için şu dosyayı kullanıyoruz.

set grid
set style line 1 lc rgb '#ff0000' pt 5 ps 1.5 lt 1 lw 2 # --- red
#set style line 2 lc rgb '#0000ff' pt 7 ps 1 lt 1 lw 2 # --- blue
set style line 2 lt 1 lc rgb "#0000ff" lw 2 pt 7 ps 1.5
set style line 3 lt 1 lc rgb "#00ff00" lw 2 pt 9 ps 1.5
set style line 4 lt 1 lc rgb "#ff00ff" lw 2 pt 13 ps 1.5
set style line 5 lt 1 lc rgb "#800000" lw 2 pt 15 ps 1.5


set xrange [70:100]
set yrange [55:75]
set ytics 5
set xtics 10
set xlabel 'Rx (\%)'
set ylabel 'Packet Delivery Rate (%)'
plot 'pdr_data' u 1:2 w lp ls 1 t 'Central', 'pdr_data' u 1:3 w lp ls 2 t 'Predictor Proxy-JRC','pdr_data' u 1:4 w lp ls 3 t 'Algorithm 1', 'pdr_data' u 1:5 w lp ls 4 t 'Algorithm 2','pdr_data' u 1:6 w lp ls 5 t 'Algorithm 3'
set terminal postscript eps enhanced color solid linewidth 0.8 'Helvetica, 15'
set output '20_node_pdr.eps'
replot

x aralığının 70 ile 100 arasında olduğunu y koordinat sisteminin ise 55 ile 75 arasında olduğu görülmektedir. Sırası ile x ve y koordinat etiketleri Rx (%), Packet Delivery Rate’tir.

plot komutu çizim işlemini gerçekleştirir. ‘pdr_data’ u 1:2 ile dosyadan kolon 2’yi ifade eder. Diğerleri ise u 1:3, 3.kolonu, u 1:4, 4.kolonu ve u 1:5, 5.kolonu ifade etmektedir.

gnuplot kullanımı

Gnuplot harika bir çizim programıdır denilebilir. En büyük özelliği biraz yazılım biraz da dosyadan veri okuma özelliğinin olmasıdır. Yapılan şekillerin tümü eps formatında saklanabilmesi bu çizim programlarını diğer benzeri formatlarından üstün kılmaktadır. Eps formatı ile birlikte şekiller daha canlı ve istenildiği takdirde resim üzerinde değişikliklerine izin verilmektedir. Farklı işletim sistemlerinde çalışabilir fakat ana yurdu linux tabanlı OS’lerdir. Basta UNIX, IBM OS/2, MS Windows, DOS, Macintosh,VMS olmak üzere bir çok plotformda çalıştırabilir.

Taşınabilir bilimsel bir görselleştirme programıdır. Gnuplot fonksiyonların ve verilerin grafigini komut vererek çizen bir yazılımdır. Özellikle eps ve ps formatlarında görselleştirme yaptığı için Matematikçiler için idealdir.
GENEL ÖZELLİKLER
  1.  Programa büyük harflerle yazılan komutlar çalışmaz. Komutlar birden fazla parametre içerebilirler.
  2. Bir satıra birden fazla komut yazılabilir. Komutlar noktalı virgül (;) ile ayrılmalıdır.
  3. Gnuplot çizim programı ücretsizdir http://www.gnuplot.info/ adresinden indirilebilir.

Çizim Yapmak:

Program çok sayıda çizim komutlarından oluşmaktadır. Bu komutları internetten araştırarak istediğiniz şekillerde çıktı alabilirsiniz. Örneğin Gnuplot’un içinde tanımlı gelen, sin(x) fonksiyonu bunlardan biridir. Eger bu fonksiyonun grafigi çizilmek istenirse verilecek komut en basit haliyle:

  plot sin(x)

Untitled

battery_module_20_node_centralized

battery_module_20_node_distributed

battery_module_25_node_centralized

battery_module_25_node_distributed

set grid
set style line 1 lc rgb '#ff0000' pt 2 ps 1.5 lt 1 lw 2 # --- red
#set style line 2 lc rgb '#0000ff' pt 7 ps 1 lt 1 lw 2 # --- blue
set style line 2 lt 1 lc rgb "#0000ff" lw 2 pt 3 ps 1.5
set style line 3 lt 1 lc rgb "#00ff00" lw 2 pt 4 ps 1.5
set style line 4 lt 1 lc rgb "#ff00ff" lw 2 pt 5 ps 1.5
set xrange [70:100]
set xtics 10 set xlabel 'Rx (\%)' set ylabel 'Guc Tuketimi(%)' plot 'battery_module_20_node_centralized' u 1:2 w lp ls 1 t 'Merkezi(20)', 'battery_module_20_node_distributed' u 1:2 w lp ls 2 t 'Dagitik(20)','battery_module_25_node_centralized' u 1:2 w lp ls 3 t 'Merkezi(25)', 'battery_module_25_node_distributed' u 1:2 w lp ls 4 t 'Dagitik(25)' 
set terminal postscript eps enhanced color solid linewidth 0.8 'Helvetica, 15'
set output 'batarya_modul_storage.eps'
replot

 

Kodunu çalıştırdığınzda aşağıdaki gibi bir çıktı elde edeceksiniz.

batarya_modul_storage