Gnuplot
Komut satırından girilen fonksiyon (f(x)=x, f(x)=x+5, f(x)=sin(x) vb.) ve/veya önceden oluşturulmuş verilere göre grafik çizme programına gnuplot
denir. GNU/Linux işletim sistemi üzerinde çalıştırılabilmektedir.
Gnuplot Özellikleri
- Doğrudan ekran çıktısı olarak ya da PNG, JPEG gibi diğer formlarda da kaydedilerek görüntülenebilir.
- Farklı komutlar birbirleriyle ilişkili olarak kullanılabilir.
- Program çok fazla kullanıcı tarafından kullanıldığı için internette kapsamlı yardım bulmak mümkündür.
Microsoft Office programları kullanan kişiler gnuplot yerine excel programını tercih etmeyi düşünebilirler. Excel basit grafiklerin oluşturulması için kullanışlı bir program gibi görülebilir. İçerdiği şablonlar ile grafik türü seçimi kolay ve görsel olarak da daha basit işlem yapmayı sağlar. Fakat oluşturulabilecek grafikler bu şablonlar ile sınırlıdır ve karmaşık veriler kullanılarak grafik çizdirmek gnuplot
programına göre daha zordur. Bu nedenle kompleks grafikler çizdirmek için gnuplot
kullanmak daha faydalıdır. gnuplot
ile grafik üzerinde oynamalar yapmakta oldukça kolaydır. Grafiğe başlık eklenebilir; x ve y eksenleri, grafik üzerindeki nokta ve/veya çizgiler, verilerin isimleri için değişiklik yapılabilir. Bunlar, yazı değişikliği, ekleme-çıkarma, renk, boyut, tip vb. değişikliklerdir.
{title="Tablo 4.1 Gnuplot ile çizilen bir grafiğin aynısını Excel'de çizmek için yapılması gereken işlemler"}
GNUPLOT | EXCEL |
---|---|
Terminalde gnuplot yazılır ve |
- Dosya1 ve dosya2deki veriler tablo |
interaktif gnuplot terminaline | halinde Excelde yan yana |
girilir. Ardından aşağıdaki komutlar | yerleştirilir. Dosya1'in ikinci |
yazılır: | kolonundaki değerler Excel formül |
yardımıyla 2’ye bölünerek yeni | |
set terminal png size 600,400 |
bir kolon oluşturulur. |
set output "test.png" |
|
set ylabel "Değer" rotate by 75 |
- Kolonlar seçilerek Charts |
set mxtics 4 |
altında Line Charts seçilerek |
set mxtics 4 |
grafik çizdirilir. |
set key left reverse title "Legend" |
|
- Çizilen grafikte eksenleri | |
plot 'dosya1' using 1:($2/2) with |
ayarlamak için Charts altında |
lines title "deney1", 'dosya2' |
Data bölümünden Select'e |
using 1:2 with points title |
tıklanır. |
"deney2" |
Burada Series için x ve y değerleri |
seçilir ve name kısmına istenilen | |
isimler (deney1,deney2) girilir. | |
- Deney2'ye ait veriler grafik | |
üzerinde tıklanarak seçilir ve | |
Charts altında Scatter seçilerek | |
çizgi olan grafik noktasal | |
gösterime çevrilir. Bu çevirim | |
işleminden sonra oluşan ikincil x | |
ve y eksenleri Chart Layout'tan axis | |
kısmından seçilerek kaldırılır. | |
- Chart Layout'tan Axis Title | |
başlığı altından Primary | |
Vertical Axis Title seçilerek y | |
eksenine başlık eklenir. Başlık | |
olarak "Değer" yazıldıktan sonra | |
başlığa sağ tıklanarak format | |
axis title seçilir. Text box | |
başlığı altında custom angle 75 | |
olarak ayarlanır. | |
- X-eksenindeki axise sağ | |
tıklanarak Format Axis seçilir. | |
Ticks kategorisinden "minör tick | |
mark type | |
outside" olarak seçilerek minör | |
tikler eksene eklenir. Not: Excel | |
2011'de minor tiklerin sıklığının | |
ayarlanması karmaşıktır. | |
- Legend istenilen yere elle manuel | |
olarak taşınabilir ya da üzerine | |
çift tıklanarak açılan ekrandan | |
placement kısmından yer seçilir. | |
Not: "Show the legend without | |
overlapping the chart" opsiyonu | |
işaretlenmemiş olmalıdır. | |
- Legende başlık ekleme opsiyonu | |
Excel 2011'de bulunmamaktadır. | |
- Grafik resim olarak kaydedilmek | |
isteniyorsa üzerine sağ tıklanarak | |
Save as Picture seçilir. Format | |
olarak png seçilerek kaydedilir. | |
Boyut ayarlamak için png resmi | |
açılır. Araçlardan boyut ayarlama | |
seçilerek istenilen pikseller | |
girilerek boyut ayarlanır. |
gnuplot
kullanmak için üç farklı yöntem bulunmaktadır. Bunlar;
- Terminale
gnuplot
yazarak giriş yapılır. Grafik için istenilen tüm özellikler sırası ile komut satırına yazılır. En sonplot
komutu ile istenilen grafik çizdirilir.plot
komutuna kadar yazılan tüm özellikler grafikte olacaktır.plot
komutundan sonra yazılan özellikler ise bir sonrakiplot
komutuna kadar kullanılmaz. Burada oluşturulan grafikler özellikler belirtilmediği sürece kaydolmaz. Resim olarak kaydetmek isteniyorsaset output
komutu kullanılmalıdır. Yazılan tüm satırların kaydedilmesi isteniyor ise de en sonunasave
komutu yazılmalıdır. Linux hesabından çıkış yapılmadığı sürecegnuplot
içinde yazılmış tüm satırlar kayıt altında tutulur. - Macro çıktıyı görmek için en uygun yöntemdir.
set output
komutu ile grafik dosyaya gönderilebilir. - Oluşturulan bir dosya ile grafik çizdirilir.
nano
komutu ile açılan bir dosyaya grafik için istenilen tüm özellikler, grafiğin kullanacağı veriler yazılarak kaydedilir. Grafiğin çizdirilmesini sağlayan komutplot
komutu, istenilen özelliklerin belirtildiği komut iseset
komutudur.plot
komutundan önce istenilen tüm özellikler belirtilmelidir. Komuttan sonra yazılan özellikler grafik oluşturulurken dikkate alınmaz. Herhangi bir özellik belirtilmedenplot
komutu direkt olarak yazılır ve grafik için gereken veriler belirtilirse, grafik çizdirilirken varsayılan değişkenler kullanılır. Oluşturulan grafiğin hangi isimle kaydedileceği deplot
komutundan önce,set output
komutu ile belirtilmelidir. Komut kullanılırken dosya isimleri tek tırnak ('), yazılar çift tırnak (") ile belirtilir. Png formatında çıktı alınmak isteniyorsa en başta istenen boyutsize
komutu ile belirtilmelidir. Oluşturulan grafikler terminal de görüntülenemez. Bunun için winscp kullanılmalıdır.
$ nano grafik01
set terminal png size 500,500
set output 'grafik01.png'
plot x
$ gnuplot grafik01
Bu aşamada f(x)=x grafiği png formatında kaydedilir. Grafiği görüntülemek için winscp ile grafiği kaydedildiği dosyaya gelinir ve dosya bilgisayara taşınarak grafik görüntülenir. Grafik bilgisayara kopyalandıktan sonra winscp içinde değil doğrudan bilgisayardan açılmalıdır.
gnuplot
ile değişiklik yapılabilecek özellikler aşağıda maddeler halinde anlatılacaktır. Özelliklerin üzerinde gösterileceği örnek grafik aşağıdaki gibidir.
$ nano ornekgrafik
set terminal png size 400,300
set output 'ornekgrafik.png'
plot x**2-20, tan(x)
$ gnuplot ornekgrafik
Grafik özelliklerindeki değişiklikler;
Başlık
Grafiklere başlık eklemek için set title
komutu kullanılarak yazılması istenen başlık adı çift tırnak (") içinde belirtilir. Yazı tipi font
komutu, yazı rengi tc
(ing. text color) komutu ile ayarlanırken yazı içerisinde kullanılan sembollerin olması gerektiği gibi görünmesi de enhance
komutu ile ayarlanır. Yazı rengini değiştirmek için tc
komutu ile kullanılabilecek iki seçenek vardır. Bunlardan biri olan lt
(ing. linetype) yanına sayı yazılır ve bu sayılar önceden atanmış yazı tipi ve rengi olarak kullanılır. Diğeri ise rgb
opsiyonudur ve istenilen rengin adı (red, green, blue gibi) veya rengin kodu (hexadecimal kod halinde)yazılır.
lt
komutu için oluşturulmuş renk ve şekil kataloğu aşağıdaki gibidir.
{id="gnuplot-lt"}
Örnekler
{lang="gnuplot"}
set terminal pngcairo size 400,300
set output '../images/gnuplot-baslik1.png'
set title "x^2-20 ve Tan(x)"
plot x**2-20, tan(x)
{lang="gnuplot"}
set terminal pngcairo size 400,300
set output '../images/gnuplot-baslik2.png'
set title "x^2-20 ve Tan(x)" tc rgb "green"
plot x**2-20, tan(x)
{lang="gnuplot"}
set terminal pngcairo size 400,300
set output '../images/gnuplot-baslik3.png'
set title "x^2-20 ve Tan(x)" font "arial,18"
plot x**2-20, tan(x)
{lang="gnuplot"}
set terminal pngcairo size 400,300
set output '../images/gnuplot-baslik4.png'
set termoption enhanced
set title "x^2-20 ve Tan(x)"
plot x**2-20, tan(x)
{lang="gnuplot"}
set terminal pngcairo size 400,300
set output '../images/gnuplot-baslik5.png'
set termoption enhanced
set title "x^2-20 ve Tan(x)" tc lt 3 font "arial,18"
plot x**2-20, tan(x)
Eksen isimleri
Grafik eksenlerine isim eklemek için set xlabel ve ylabel komutları kullanılarak yazılması istenen başlık adı çift tırnak (") içinde belirtilir. Yazı tipi font
komutu, yazı rengi tc
(textcolor) komutu, yazının eksene olan yakınlığı offset
komutu ve yazının eğim açısı rotate
komutu ile ayarlanırken yazı içerisinde kullanılan sembollerin olması gerektiği gibi görünmesi de enhance
komutu ile ayarlanır.
Örnekler
{lang="gnuplot"}
set terminal pngcairo size 400,300
set output '../images/gnuplot-eksen1.png'
set ylabel "Fonksiyon Değeri"
plot x**2-20, tan(x)
{lang="gnuplot"}
set terminal pngcairo size 400,300
set output '../images/gnuplot-eksen2.png'
set ylabel "Fonksiyon Değeri" tc lt 3
plot x**2-20, tan(x)
{lang="gnuplot"}
set terminal pngcairo size 400,300
set output '../images/gnuplot-eksen3.png'
set ylabel "Fonksiyon Değeri" font "arial,18"
plot x**2-20, tan(x)
{lang="gnuplot"}
set terminal pngcairo size 400,300
set output '../images/gnuplot-eksen4.png'
set ylabel "Fonksiyon Değeri" tc rgb "green"
plot x**2-20, tan(x)
{lang="gnuplot"}
set terminal pngcairo size 400,300
set output '../images/gnuplot-eksen5.png'
set ylabel "Fonksiyon Değeri" offset 2,0
plot x**2-20, tan(x)
{lang="gnuplot"}
set terminal pngcairo size 400,300
set output '../images/gnuplot-eksen6.png'
set ylabel "Fonksiyon Değeri" rotate by 80
plot x**2-20, tan(x)
{lang="gnuplot"}
set terminal pngcairo size 400,300
set output '../images/gnuplot-eksen7.png'
set termoption enhanced
set xlabel "Açı({/Symbol\260})"
set ylabel "Fonksiyon Değeri"
plot x**2-20, tan(x)
Legend
Grafiğe legend eklemek için set key
komutu kullanılarak yazılması istenen başlık adı çift tırnak (") içinde belirtilir. Yazının grafiğin içinde mi dışında mı olacağı, grafiğin hangi köşesinde olacağı, etrafında kutu olup olmayacağı, yazının hangi yöne yaslı olacağı, sembolün mü yoksa yazının mı önce yazılacağı gibi bir çok farklı seçenek bu komut ile ayarlanabilir.
Örnekler
{lang="gnuplot"}
set terminal pngcairo size 400,300
set output '../images/gnuplot-legend1.png'
set termoption enhanced
set key tmargin right title 'Legend' ##originally tmargin in right
plot x**2-20 title "x^2-20", tan(x) title "Tan(x)"
{lang="gnuplot"}
set terminal pngcairo size 400,300
set output '../images/gnuplot-legend2.png'
set termoption enhanced
set key top center horizontal
plot x**2-20 title "x^2-20", tan(x) title "Tan(x)"
{lang="gnuplot"}
set terminal pngcairo size 400,300
set output '../images/gnuplot-legend3.png'
set termoption enhanced
set key right title 'Legend'
plot x**2-20 title "x^2-20", tan(x) title "Tan(x)"
{lang="gnuplot"}
set terminal pngcairo size 400,300
set output '../images/gnuplot-legend4.png'
set termoption enhanced
set key outside top right vertical title 'Legend'
plot x**2-20 title "x^2-20", tan(x) title "Tan(x)"
{lang="gnuplot"}
set terminal pngcairo size 400,300
set output '../images/gnuplot-legend5.png'
set termoption enhanced
set key outside top right vertical reverse box title 'Legend'
plot x**2-20 title "x^2-20", tan(x) title "Tan(x)"
{lang="gnuplot"}
set terminal pngcairo size 400,300
set output '../images/gnuplot-legend6.png'
set termoption enhanced
set key left Left reverse box title 'Legend'
plot x**2-20 title "x^2-20", tan(x) title "Tan(x)"
{lang="gnuplot"}
set terminal pngcairo size 400,300
set output '../images/gnuplot-legend7.png'
set termoption enhanced
set key left reverse box title 'Legend'
plot x**2-20 title "x^2-20", tan(x) title "Tan(x)"
Çizgi tipi
Grafikteki verileri belirten çizgi ve/veya noktaların şekilleri ve renklerini değiştirmek için lt
(linetype) komutu kullanılır. Grafik çizdirilirken lt
komutu kullanılmazsa şablonda belirtilen sıra ile ilerleyerek grafik oluşturulur. İlk çizilen grafik için lt 1
özellikleri, ikincisi için lt 2
özellikleri gibi. Bunun yanı sıra şablondan hazır almayıp istenilen tipte oluşturmak için de lc
(linecolor), rgb
ve lw
(lineweight) komutları kullanılabilir.
set style line n
komutuyla çizdirilecek olan grafikler numaralandırılır. plot
komutundan sonra her bir çizgi için girilmiş olan numara ls n
ile belirtilir. Belirlenmiş olan özelliklere göre çizdirilmek istenen grafik ls
(linestyle) komutuyla hazırlanabilir.
{lang="gnuplot"}
set terminal pngcairo dashed size 500,300
set output '../images/gnuplot-cizgitipi.png'
set key top left
set style line 1 lt 3 lw 4 lc rgb '#990042'
set style line 2 lt 7 lw 3 lc rgb '#31f120'
set style line 3 lt 2 lw 3 lc rgb '#0044a5'
set style line 4 lt 9 lw 4 lc rgb '#888888'
plot [0:1] x**0.5 ls 1, x ls 2, x**2 ls 3, x**3 ls 4
Nokta stili
Komutta girilen ps
pointsize ın kısaltmasıdır. Burada işaret için boyutu ayarlamakta kullanılmıştır.pt
nokta tipini (pointtype) temsil eder, istenilen işaret tipi bu komutla belirlenebilir. Çizgi bıyunca ne kadar aralıklarla işaret koyulacağını pi
(pointinterval) komutu ile ayarlanır.Standart olarak bu uzaklık 1 olarak ayarlıdır.
{lang="gnuplot"}
set terminal postscript color solid
set output '../images/gnuplot-nokta.ps'
set key top left
set style function linespoints
set style line 1 lw 4 lc rgb '#990042' ps 2 pt 6 pi 5
set style line 2 lw 3 lc rgb '#31f120' ps 2 pt 12 pi 3
set style line 3 lw 3 lc rgb '#0044a5' ps 2 pt 9 pi 5
set style line 4 lw 4 lc rgb '#888888' ps 2 pt 7 pi 4
plot [0:1] x**0.5 ls 1, x ls 2, x**2 ls 3, x**3 ls 4
Opaklık ve saydamlık
Gnuplotun 4.4 versiyonuyla birlikte grafiklerde yapılan çizimlerde opaklık ayarlanabilir hale gelmiştir. İçi dolu alanlar çizilirken alanın opaklığını ya da saydamlığını ayarlamak grafiğin görsel olarak anlaşılmasında oldukça etkili bir rol oynar.
Öncelikle set term
komutuyla terminali SVG
terminaline dönüştürmek gereklidir. Ancak bu şekilde transparanlığı görüntülemek mümkün hale gelir. Bu nedenle çıktıda png
değil svg
formatında olmalıdır. Terminal ayarlandıktan sonra transparent
komutuyla opaklık ayarlanabilir. Bu değer 0 ila 1 aralığındadır. 0 tamamen görünmez hali, 1 ise tam opaklığı temsil eder.
{lang="gnuplot"}
set terminal svg
set output '../images/gnuplot-saydamlik.svg'
set style fill transparent solid 0.3
plot [0:pi] sin(x)**2 with filledcurves above y1=0 lc rgb '#00ffff',0.75*cos(2*x)**2 with filledcurves above y1=0 lc rgb '#aa00aa'
Patern ile çizdirilmiş grafiklerde de saydamlık uygulamak mümkündür. Örnekteki
set style fill transparent solid 0.3
komutu yerineset style fill transparency pattern n
komutu girilirse istenilen paternde saydamlığı ayarlamamk mümkün hale gelir.
Cookbook
Using two different y-axes
Bazı durumlarda çizdirilmek istenilen veriler aynı y ekseninde olmaz. tics
komutuyla bu sorun halledilebilir. Gnuplot iki adet x-ekseni ve y-ekseni içeren çizimler yapabilir. İkinci bir y-ekseni eklenmek istendiğinde y2tics
komutu girilmelidir. Komuttan sonra girilen ilk veri başlangıç noktasını, ikinci veri ise eksendeki aralık mesafesini ayarlamayı sağlar. set ytics nomirror
komutu gnuplota sağ tarafta farklı bir eksen kullanmasını söyler. Son komut olan axis
, çizdirilecek olan grafiklerin eksenlerini belirler.
{lang="gnuplot"}
set terminal pngcairo size 500,300
set output '../images/gnuplot_cookbook_1.png'
set y2tics -100, 10
set ytics nomirror
plot sin(1/x) axis x1y1,100*cos(x) axis x1y2
Making a scatterplot
Her bir veri için nokta ya da küçük bir sembol içeren grafiklere scatterplot denir. Bir scatterplot çizebilmek için öncelikle dosyaya ihtiyaç duyulmaktadır. Örnekte 'scatter_plot.txt' adında içinde rastgele veri bulunan bir dosya oluşturulmuştur. Dosyada her x verisine karşılık bir y verisi bulunmaktadır. Grafiği çizdirmek için plot
komutundan sonra hazırlanmış olan dosyanın ismi tırnak ('') içinde girilir. Eğer dosyada çok fazla veri varsa sembol olarak nokta (dots
) kullanılarak daha küçük sembollerle veriler gösterilebilir.
{lang="gnuplot"}
set terminal pngcairo size 600,300
set output '../images/gnuplot_cookbook_2.png'
plot 'scatter_plot.txt' with points pt 7
Plotting boxes
Gnuplot'un çizdiği kutu stili, bar grafiklerine benzerdir. Her bir veri eksen boyunca bir kutu şeklinde çizilerek gösterilir. İsteğe göre çizdirilen bu kutular paternlerle, renklerle, ya da boş olarak doldurulabilir. bu stil genelde histogram grafiklerinin bir çeşididir.
Aşağıda girilen ilk komut ile çizilen kutular patern ile doldurulur. Boş kutu oluşturmak için set style fill empty
ya da kutuları renlendirmek için set style fill solid
ya da doldurma stilini özelleştirmek için set style fill pattern n
(n patern için seçilen herhangi bir tamsayı)komutları girilerek çizdirilen grafik öznelleştirilebilir.
{lang="gnuplot"}
set terminal pngcairo size 500,300
set output '../images/gnuplot_cookbook_3.png'
set style fill pattern
plot [-6:6] besj0(x) with boxes, sin(x) with boxes
Plotting circles
Verilerin daireler şeklinde gösterildiği grafikler çizilebilir. Bu grafik x eksenine göre çizilmiş bir noktanın iki değeri olduğunda elverişli olur. Örneğin; meteorolojik bir verinin grafiği çizilirken sıcaklığın zamana göre değişimi grafiğinde, dairelerin yarıçapı nem oranını gösterebilir.
Oluşturulmuş olan parabolacircles.txt
3 kolonlu dosyasındaki her bir nokta için 3. kolondaki veri çap kabul edilerek bir daire çizilir. Örnekteki veriler rastgele seçilmiştir.
{lang="gnuplot"}
set terminal pngcairo size 500,300
set output '../images/gnuplot_cookbook_4.png'
set key off
plot "parabolacircles1.txt" with circles
Drawing filled curves
Çizilen verilerde ya da iki eğimdeki farklar ortaya çıkartılmak istendiğinde belirli bölgeler işaretlenebilir. filledcurves
komutuyla istenilen kısmın içi doldurulabilir. Aşağıdaki örnekte renk belirtilmemiştir fakat istenilen renk lt rgb colour
(colour herhangi bir renk olabilir) komutu girilerek seçilebilir. set style fill pattern n
komutuylada doldurulan kısım için düz renk yerine istenilen bir patern seçilebilir.
{lang="gnuplot"}
set terminal pngcairo size 500,300
set output '../images/gnuplot_cookbook_5.png'
plot [0:50] besy0(x) with filledcurves above y1=0.07
Making a basic histogram plot
Tekrarlı sayılardan oluşan verilerin, tablodan yararlanarak grafiğe aktarılması yani veri gruplarının grafiğinin dikdörtgen sütunlar halinde gösterildiği grafik türüne histogram denir.
Örnekteki parabola.txt
adındaki dosya iki kolondan oluşan verileri içermektedir. x ve y noktalarından oluşan bir grafik çizmek yerine devam eden çizgilerden oluşan ve adımların yatay ve dikeyde takip edilebileceği grafik çizimi yapılabilir. Yatay çizgiler tam olarak x için verilen koordinatı göstermez bunun yerine önce ve sonra gelen x koordinatlarının ortalamasına göre yapılan çizimi gösterir. Bu bir histogram oluşturulurken kullanılan genel yöntemdir.
{lang="gnuplot"}
set terminal pngcairo size 500,300
set output '../images/gnuplot_cookbook_6.png'
plot [-2:5] 'parabola.txt' with histeps
Stacking histograms
Histogram grafiklerinin bir diğer türüde ... .Bu grafik çizimiyle iki ayrı dağılımı kıyaslamak mümkün hale gelir. İkinci dağılım eksenlere göre ölçülerek yapılmaz, ama kutunun üst kısmı ilk dağılımı verir??
Örnekte ilk olarak girilen set
komutuyla histogram barları istenilen renkle doldurulmuş ve etrafına siyah bir çerçeve çizdirilmiştir. Bu komut girilmezse kutuların içi boş kalacaktır. Sonraki iki satırda dosyadaki verilerle histogram grafiği çizilmesi için yazılmıştır. rowstacked
komutuyla dosyadaki her bir satırın birlikte dikey bir kolon oluşturması sağlanır.?? Son satırda girilen komutlarla hesaplamalarda hangi kolonların kullanılacağı belirlenmiştir. Parantez içerisindeki değerler; dolar işareti ile kolon numarası belirlenmiştir. 3. kolondaki değerler 20 ile çarpılarak büyütülmüştür.
{lang="gnuplot"}
set terminal pngcairo size 500,300
set output '../images/gnuplot_cookbook_7.png'
set style fill solid 1.0 border lt -1
set style data histograms
set style histogram rowstacked
plot [0:40] 'parabolacircles1.txt' using ($2), '' using (20*$3) notitle
Plotting multiple histograms
Histogramları sıkıştırmak yerine sıra sıra görüntülemekte mümkündür. Bir önceki grafikteki veriler kullanılarak farklı tarzda histogram grafik çizilmiştir. Grafikte yer açmak için çizilen kutular otomatik olarak daha ince çizilir.
{lang="gnuplot"}
set terminal pngcairo size 500,300
set output '../images/gnuplot_cookbook_8.png'
set style fill solid 1.0 border lt -1
set style data histograms
plot [0:40] 'parabolaCircles.text' using (-$2), '' using (20*$3) notitle
Dealing with errors
Grafikte verilerden kaynaklanan dağılımı ya da errorları göstermek mümkündür. Bu grafik yöntemlerinden bir taneside "error bar" stilidir.
Örnekte yine parabolaCircles.text
dosyası kullanılmıştır. Dosyadaki 3. kolonda bulunan rastgele veriler grafikteki errorları gösterir. Gnuplotun standart olarak nokta büyüklüğü küçüktür, bu nedenle ilk olarak daha görünür olması adına değer büyütülmüştür. İkinci komutla küçük olan yatay barlar büyütülmüştür. Üçümcü komutla aralık, bir önceki örnekteki veriler ve error barın stili seçilir. ''
bu işaret kullanılacak olan dosyanın öncesinde belirtilenle aynı dosya olduğu anlamına gelmektedir. pt
point type yani punto tipini belirtir. Örnekte seçilen pt 7
yuvarlak bir işaret anlamına gelmektedir. Son olarak girilen notitle
komutu ise grafikte ekstra bir girdi olmasını engeller.
{lang="gnuplot"}
set terminal pngcairo size 500,300
set output '../images/gnuplot_cookbook_9.png'
set pointsize 3
set bars 3
plot [1:3] 'parabolaCircles.text' using 1:(-$2):3 with errorbars, '' using 1:(-$2):3 pt 7 notitle
Error barları diğer grafik stilleriyle birleştirilebilir. Örnekte error barları kutularla çizilmiş bir grafikle birleştirilmiştir. Kutular ince çizgiler oluşturulan patern seçilerek doldurulmuş ve siyah bir çerçeve ile belirginleştirilmiştir. Komut satırındaki errorbars
komutu boxerrorbars
olarak değiştirilerek yeni grafik çizilmiştir.
{lang="gnuplot"}
set terminal pngcairo size 500,300
set output '../images/gnuplot_cookbook_10.png'
set style fill pattern 2 border lt -1
plot [1:3] 'parabolaCircles.text' using 1:(-$2):3 with boxerrorbars
Making a statistical whisker plot
Whisker grafiği girilen verilerin merkezi dağılımına göre yayılımını gösteren bir grafiktir. Her bir sembol bir dizi ölçümün ortalamasını gösterir. Whiskers hesaplanan limitlerde en küçük ve en büyük verileri gösterir. Sapan değerler grafiğin dışında gösterilir. Kutu içindeki çizgiye medyan denir. Eğer veriler medyan etrafına simetrik yayılmışlarsa; medyan kutuyu ortalamıştır. Verilerin dağılımndaki değişikliğe göre medyanın konumuda değişiklik gösterir.
Örnekte candlesticks.dat
dosyası kullanılmıştır. Dosya 6 adet kolondan oluşmaktadır. Dosya formatı aşağıda gösterildiği gibi olmalıdır.
x whisker_min box_min mean box_high whisker_high
set
komutu girilen ilk iki satırla x ve y eksenlerinin yayılımı ayarlanmıştır. Sonraki komut satırında boxwidth
komutuyla dikdörtgenlerin genişliği belirlenmiştir. Örnekte seçilen genişlik oldukça dardır. Ardından plot
komutuyla grafik çizdirilmiştir. Kullanılan dosyadaki verilerin kolonları doğru sıralamada olmadığı için using
komutuyla kolonlar grafik için sıralanır. whiskerbars
komutu whiskerların sonuna küçük capler koyar. plot
komutunun ikinci kısmında yine aynı dosyanın 4. kolonu (ortalamalar) kullanılarak kutuların içindeki yatay çizgiler (medyan) çizdirilir.
{lang="gnuplot"}
set terminal pngcairo size 500,300
set output '../images/gnuplot_cookbook_11.png'
set xrange [0:11]
set yrange [0:10]
set boxwidth 0.2
plot 'candlesticks.dat' using 1:3:2:6:5 with candlesticks lt -1 lw 2 whiskerbars, '' using 1:4:4:4:4 with candlesticks lt -1 lw 2 notitle
İsteğe bağlı olarak whisker grafiklerindeki kutuların içleri renkle ya da bir paternle doldurulabilir. Bunun için girilmesi gereken komut;
set style fill solid
ya da
set style fill pattern n
Making an impulse plot
Verilerin farklılıklarını gözlemlemek için kullanılan bir diğer grafik çeşidide impulse ya da stick grafikleridir. Eğer çizgilerin kalınlığı arttırlırsa impulse grafikleri kutu grafiklerine benzer olacaktır.
Örnekte girilen set
komutuyla fonksiyonu çizdirmek için gerekli olan veri sayısı belirtilmiştir. plot
komutuyla girilen with impulses
opsiyonuyla gnuplot
a grafiği impulse stiliyle çizdirmek istenildiği söylenir.
{lang="gnuplot"}
set terminal pngcairo size 500,300
set output '../images/gnuplot_cookbook_12.png'
set samples 30
plot [0:2*pi] sin(x) with impulses lw 2
Stem grafikleri elektrik mühendisliğinde kullanılan bir grafik türüdür. Impulse grafiklerine benzerdir fakat bu grafik biçiminde her bir çubuğun ucunda işaret bulunur. Bu şekilde çizdirilen grafik sayesinde verilerin dağılımını görmek, grafiği okuyabilmek daha kolay olur.
Örnekte veriler bir impulses
opsiyonuyla bir de points
opsiyonuyla çizdirilerek grafik oluşturulmuştur.
{lang="gnuplot"}
set terminal pngcairo size 500,300
set output '../images/gnuplot_cookbook_13.png'
set samples 50
plot [0:4*pi] exp(-x/4.)*sin(x) with impulses lw 2 notitle, exp(-x/4.)*sin(x) with points pt 7
Graphing parametric curves
Gnuplot
parameter
komutuyla x ve y değerlerinin üçüncü bir değişkene göre değişimini gösteren grafikler çizebilir.
Örnekte kullanılacak olan örenk sayısı 1000 seçilmiştir. set parametric
komutuyla gnuplotun plot
komutunu yorumlama şekli değiştirilir. Son satırda girilen x ve y koordinatları artık t
parametresine göre çizilir.
{lang="gnuplot"}
set terminal pngcairo size 500,300
set output '../images/gnuplot_cookbook_14.png'
set samples 1000
set parametric
plot sin(7*t), cos(11*t) notitle
Plotting with polar coordinates
Kutupsal koordinatlarda bir yarıçap (r
) ve bir açı (θ
) bulunur. Gnuplot komut satırında açı koordinatları t
ile belirtilir. Kutupsal koordinatlar kullanılarak spiraller, kapalı eğriler çizmek mümkündür.
Girilen ilk üç set
komutuyla merkezde kesişen eksenler oluşturulur. unset border
komutuyla çerçeveyi oluşturan çizgi silinir. Örnek sayısı 500 seçildikten sonra set polar
komutu sayesinde (x-y)
koordinatları (r-θ)
koordinatlarına dönüştürülür.
{lang="gnuplot"}
set terminal pngcairo size 400,400
set output '../images/gnuplot_cookbook_15.png'
set xtics axis nomirror
set ytics axis nomirror
set zeroaxis
unset border
set samples 500
set polar
plot [0:12*pi] t
Controlling your tics
Grafik çiziminde aralıklar belirtilirken bir major tikler bir de minör tikler kullanılır. Bunlar grafiğin anlaşılabilmesi, okunabilir olması için önemli araçlardır.
Örnekte mxtics
komutuyla x eksenindeki ve mytics
komutuyla y eksenindeki minör tiklerin hangi aralıklarla yerleştirileceği ayarlanmıştır.
{lang="gnuplot"}
set terminal pngcairo size 500,300
set output '../images/gnuplot_cookbook_16.png'
set grid
set mxtics 4
set mytics 2
plot [0:2*pi] sin(12*x)*exp(-x/4)
Standart olarak gnuplotta tik boyutları küçük olarak ayarlıdır. Bu nedenle minör tikler eklendiğinde gözle net olarak farkedilemeyecek kadar küçük olabilir. Daha görünür hale getirmek için tiklerin boyutları ayarlabilir. set tics scale 3
komutuyla standart olan tik boyutu 3 katına büyütülmüştür.
{lang="gnuplot"}
set terminal pngcairo size 400,300
set output '../images/gnuplot_cookbook_17.png'
set tics scale 3
set mxtics 4
set mytics 4
plot [0:4*pi] sin(x)/x
Minör tiklerin de boyutlarını ayarlamak mümkündür. Bunun için
set tics scale a,b
komut satırına girilebilir. Buradakia
major tiklerin boyutunu ayarlarkenb
yerine girilen sayı minör tiklerin boyutunu ayarlar. Grafikte tiklerin tamamen kaldırılması isteniyorsaunset tics
komutu girilmelidir.
Gnuplot sayesinde tiklerin formatlarınıda değiştirmek mümkündür. set format y
ve set format x
komutları ile x ve y eksenlerindeki tikler nitelendirilebilir. Tüm format opsiyonlarını görüntülemek için gnuplot interaktif ekranında help set format
komutu girilebilir.
Örnekte y eksenindeki tikler için P= %.2f Watts
girilmiştir. Burada '%' karakteri genelde grafik üzerinde olması gereken sayıyı temsil eder. f
floating point anlamına gelir. Bu da sayının ondalık kısmınında olduğunu temsil eder.
{lang="gnuplot"}
set terminal pngcairo size 500,300
set output '../images/gnuplot_cookbook_18.png'
set ylabel "Output power"
set format y "P = %.2f Watts"
set format x "%.3f%%"
set rmargin 6
plot [0:100] x**2
Arranging an array of plots
Gnuplotta belirli sayıdaki grafik tek bir yapıda birleştirilebilir. Bunun için multiplot
özelliği aktif hale getirilmelidir. set multiplot
komutuyla aktif hale getirilen bu mod, unset multiplot
ile sonlandırılır. set multiplot layout 2,2
yazıldığında alan 2*2 bölmeye ayrılır. Her bir bölmeye bir grafik çizimi yapılabilir.
{lang="gnuplot"}
set terminal pngcairo size 500,300
set output '../images/gnuplot_cookbook_19.png'
set multiplot layout 2, 2
plot besj0(x)
plot besj1(x)
plot besy0(x)
plot besy1(x)
unset multiplot
Creating an inset plot
Kullanılan bir diğer grafik modeli ise grafiğin içinde ayrı, daha küçük bir grafik bulunan grafiklerdir. Grafik içinde bulunan bu tarz grafiklere inset denir. Bu modelde grafik çizimi, çizdirilen grafiğin belirli kısmını daha büyük görüntülemek için kullanılabilir.
Bu tarzda bir grafik çizebilmek için öncelikle multiplot
modu aktif hale getirilmelidir. set object ellipse
komutuyla grafikte istenilen bölgeye bir elips şekli çizilir. set arrow
komutuyla ise bu elipsten çizdirilecek olan küçük grafiğe doğru bir ok çizilir. inset grafiğin boyutu set size
komutuyla daha küçük olarak ayarlanır. Ardından ikinci grafik (tam ekran) için komutlar girilirek multiplot modu kapatılır.
{lang="gnuplot"}
set terminal pngcairo size 500,300
set output '../images/gnuplot_cookbook_20.png'
set multiplot
set object ellipse center .13, 0 size .4, 4
set arrow from .1, 2.1 to screen .22, .4 front lt 3
set samples 1000
set grid
set xtics .4
set ytics 4
plot [0:2*pi] exp(x)*sin(1/x)
set origin .2, .4
set size .25,.25
clear
unset key
unset grid
unset object
unset arrow
set xtics .1
set ytics .5
set bmargin 1
set tmargin 1
set lmargin 3
set rmargin 1
plot [0:.2] exp(x)*sin(1/x)
unset multiplot
Veritabanından gnuplot ile çizim
{lang="gnuplot"}
set terminal png size 500,500
set output "mysql_test.png"
plot '< mysql verianalizi_gen -r -s -e''select * from gene_coordinates limit 100'' ' using 1:5