Bir makale için veri görselleştirme üzerinde çalışırken, hepsinde pozitif etiketler bulunan 4 eksene sahip olmak gerekli hale geldi.
Makaledeki diğer grafiklerde olduğu gibi, kullanmaya karar verdim. gnuplot. Öncelikle birçok örneğin bulunduğu resmi sitesine baktım. Doğru olanı bulduğumda çok mutlu oldum
Kodu hızlıca kopyalayıp çalıştırdım. Bir hata alıyorum. Bunu çözmeye çalışıyorum. Eski bir gnuplot'um olduğu ortaya çıktı (Version 5.0 patchlevel 3 last modified 2016-02-21
) ve bunu yapamaz.
Gnuplot'un esnekliğini bildiğim için World Wide Web'i araştırmaya başladım ve stackoverflow'ta birkaç uygun örnekle karşılaştım (
Ayrıca komutlarla yaptığım manipülasyonlar aşağıdakilere yol açtı:
0) Devre Dışı Bırak
unset border
1) 4 sıfır çizgi oluşturun - 2 ana ve 2 ek:
set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis
Sıfır satır hakkında birkaç kelime
2) Eksenler üzerindeki işaretlerin gösterimini ayarlayın:
max = 1.5 # Для гибкости
min = -max
set xtics axis 0,.5,max in scale 0.5,0.25 mirror norotate autojustify offset 0.35
set ytics axis .5,.5,max in scale 0.5,0.25 mirror norotate autojustify
set x2tics axis .5,.5,max in scale 0.5,0.25 mirror norotate autojustify
set y2tics axis .5,.5,max in scale 0.5,0.25 mirror norotate autojustify
Eksenlerdeki işaretler ile biraz daha fazla ayar vardır.
axis
- onay işaretlerinin yerleştirileceği yer, eksen üzerinde veya (kenarlık - sınırda).
Eksen için x
, sağa giden 0,.5,max
. İlk sayı geri sayımın başlangıcını, ikincisi adımı, üçüncüsü ise geri sayımın bitişini gösterir. İlki için 0
ve geri kalanı için 0.5
böylece sıfırlar orijini etkilemez.
Sıfırları koordinat merkezinde karıştırmak.
Tüm aralıklar *tics
olarak yapılandırılmış 0,.5,max
Olmadan offset 0.35
için xtics
Ayar scale 0.5,0.25 mirror
eksene çentikler ekler. Rakamlarla oynarsanız boyutları değişecektir.
Ayrıca değişkenleri de giriyorum max, min
yardımıyla grafik eksenlerinin sınırlarını kontrol ediyorum.
Onay işaretlerinin ayarlanmasıyla ilgili ek bilgi, bölümdeki belgelerde bulunabilir.
3) Eksen aralıklarını ayarlayın:
set xrange [ min : max ]
set yrange [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]
Burada 2 eksenin başladığına dikkat edilmelidir. min
büyütme ve 2 eksen için - ile max
azaltmak için.
Bölümdeki ek bilgiler
4) Baltalara isim verin ve onları güzelce yerleştirin:
set label "H_1" at 0, max center offset char 2, 0
set label "H_2" at max+0.1, 0 center offset char -1, 1
set label "H_3" at 0, min center offset char -2, 0
set label "H_4" at min, 0 center offset char 0, 1
5) Giriş verilerinin oluşturulması
Her grafiğin 2 sütunu vardır. Satır numarası - eksen numarası, döngüyü kapatmak için beşinci satır. Tek sütun - koordinat x
, eşit - y
. Tüm noktaların eksenlerde bulunması nedeniyle çiftten (x, y)
bir her zaman sıfırdır.
Her ne kadar 4 eksen de pozitif olsa da bazı veriler ana eksenlerde yer aldığı için yapay olarak negatif yarıya taşınıyor. x
и y
.
0 1 0 1.21
1 0 1.21 0
0 -1 0 -1.06
-1 0 -1.19 0
0 1 0 1.21 #Дубликат первой точки
sonuç
Tam kod
#!/usr/bin/gnuplot -persist
#файл в кодировке cp1251 чтоб русские буквы отображались в eps
set encoding cp1251
set terminal postscript eps enhanced monochrome size 5cm,5cm
set output "./img/eps/fig2.eps"
unset border
set key at -2, 1.5 font 'LiberationSerif, 23'
set key left top samplen 4.5
set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis
max = 1.5
min = -max
set xtics axis 0,.5,max in scale 0.5,0.25 mirror norotate autojustify offset 0.35 font 'LiberationSerif, 20
set ytics axis .5,.5,max in scale 0.5,0.25 mirror norotate autojustify font 'LiberationSerif, 20
set x2tics axis .5,.5,max in scale 0.5,0.25 mirror norotate autojustify font 'LiberationSerif, 20
set y2tics axis .5,.5,max in scale 0.5,0.25 mirror norotate autojustify font 'LiberationSerif, 20
set xrange [ min : max ]
set yrange [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]
set label "H_1" at 0, max center offset char 2, 0 font 'LiberationSerif, 23'
set label "H_2" at max+0.1, 0 center offset char -1, 1 font 'LiberationSerif, 23'
set label "H_3" at 0, min center offset char -2, 0 font 'LiberationSerif, 23'
set label "H_4" at min, 0 center offset char 0, 1 font 'LiberationSerif, 23'
set style line 1 linetype 1 pointtype 7 linewidth 3 linecolor black
set style line 2 linetype 2 pointtype 7 linewidth 3 linecolor black
plot 'data.csv' using 1:2 title "1" w lp ls 1 ,
'data.csv' using 3:4 title "2" w lp ls 2
Kaynak: habr.com