2012-03-02 28 views
30

Bazı metin dosyalarında, 10000 satır ve 2 sütun olduğunu söyleyen verilerim var. plot "filename.txt" using 1:2 with lines ile kolayca çizebileceğimi biliyorum. İstediğim şey, sadece çizim yapmak, 1000'den 2000'e kadar olan satırları veya herhangi bir başka makul seçimi söyleyelim. Bunu kolayca yapmak mümkün mü? Şimdiden çok teşekkür ederim.Gnuplot, bir satırdan bir satırdaki veriyi çizme

+0

belki bu size çok yardımcı olabilir: http://stackoverflow.com/questions/6564561/gnuplot-conditional-plotting-plot-col-acol-b-if-col-cx –

cevap

26

basit:

plot "<(sed -n '1000,2000p' filename.txt)" using 1:2 with lines 
+1

Bu tür küçükleri öğrenebileceğim güzel bir çevrimiçi şey var mı harika hileler. Cevap için teşekkürler btw. – YBE

+0

@YBE [Bu site] 'yi öneririm (http://t16web.lanl.gov/Kawano/gnuplot/index-e.html). – kev

+0

Kev kırık link –

58

O gnuplot içinde "every" command aradığınız ne olduğu görülmektedir:

plot "filename.txt" every ::1000::2000 using 1:2 with lines 

Alternatif öncesi işlem dosyası ilgilendiğiniz satırları seçmek için. Örneğin, awk kullanarak:

awk "NR>=1000 && NR<=2000" filename.txt > processed.txt 

Ardından mevcut gnuplot komut/komut ile sonuçlanan "Processed.txt" kullanın.

+0

Eğer biri linux veya mac osx, zaten awk olmalısınız (bu, sed ve grep gibi standart * nix araç takımının bir parçasıdır). Yukarıdaki komutu, öntanımlı bir adım olarak (gnuplot'u başlatmadan önce) çalıştırarak başlatarak, varolan dosyanızın zarar görmeden bırakılmasıyla yeni bir veri dosyası "işlenmiş.txt" oluşturur. Ardından, çizim komutlarınızda "dosyaadı.txt" yerine "işlenmiş.txt" yi kullanmalısınız. Awk kılavuzu şu adreste bulunabilir: http://www.gnu.org/software/gawk/manual/gawk.html native gnuplot çözümü için –

+5

+1 – Pankrates

0

Ben sed, grep veya bash gibi bazı komut satırı araçlarını öneriyoruz. Örnekte

head -n 2000 ./file.data > temp.data 

ve

tail -n 1000 temp.data > temp2.data 

işe yarayabilir. Fakat bu kadar büyük sayıların kafa ve kuyrukla çalışıp çalışmadığı test edilmedi.

0.

gibi bir şey deneyin help plot datafile using pseudocolumn

bkz sözde sütununu kullanarak (sistem onları örneğin yüklü olmadığı takdirde) Muhtemelen harici yardımcı olan bağımlılığımızı ortadan kesebilir

6

:

(Gnuplot 4.4.2 üzerinde test Linux)
LINEMIN=1000 
LINEMAX=2000 

#create a function that accepts linenumber as first arg 
#an returns second arg if linenumber in the given range. 
InRange(x,y)=((x>=LINEMIN) ? ((x<=LINEMAX) ? y:1/0) : 1/0) 

plot "filename.txt" using (InRange($0,$1)):2 with lines 

1

Gnuplot NaN değerlerini yok sayar. Bu, x koordinatının belirtilen bir aralığı için benim için çalışır. Ancak satır aralığını nasıl belirleyeceğimizden emin değilim.

cutoff(c1,c2,xmin,xmax) = (c1>=xmin)*(c1<=xmax) ? c2 : NaN 
plot "data.txt" u 1:(cutoff(($1),($2),1000,2000)) 
İlgili konular