Có một vài điều có thể xảy ra ở đây - mà không thấy datafile của bạn thì không thể nói được. Một cặp vợ chồng mà tôi có thể nghĩ ra khỏi đỉnh đầu của tôi là:
Tất cả datapoints của bạn trong cột 2 đều nhỏ hơn hoặc bằng 0 (Bạn nhận được thông báo lỗi vì log (0) là undefined)
Bạn không có bất kỳ điểm nào trong cột đầu tiên từ 50 đến 100. Trong trường hợp này, tất cả các vị trí dữ liệu của bạn bị cắt bớt khỏi phạm vi ô vì set xrange [50:100]
Tập dữ liệu của bạn chỉ có 1 cột ... Trong trường hợp này , gnuplot không thấy bất kỳ giá trị y nào. (Thay đổi để plot '../myFile.final' u 1 ...
)
EDIT
Ok, bây giờ mà tôi nhìn thấy datafile của bạn, vấn đề chắc chắn là bạn đã set xrange [50:60]
nhưng dữ liệu của bạn xrange chỉ chạy 0-2 (gnuplot bắt đầu lập chỉ mục datafile từ 0). Cách dễ nhất để sửa lỗi này là sử dụng cột giả 0. Cột giả 0 đơn giản là số dòng bắt đầu từ 0 (đó là những gì gnuplot vẽ trên trục x nếu bạn làm plot 'blah.txt' using 1
. Dưới đây là ví dụ:
scale_x(x,xmin,xmax,datamin,datamax)=xmin+(xmax-xmin)/(datamax-datamin)*x
plot 'test.dat' using (scale_x($0,50,60,0,2)):1 w lines title "scaled xrange"
Lưu ý rằng nếu bạn không biết làm thế nào đặc tả sử dụng công trình, số trước bằng $ là hoạt động tố khôn ngoan trên đó toàn bộ cột Ví dụ:.
plot 'foo.bar' using 1:($2+$3)
sẽ vẽ cột đầu tiên cộng với tổng của các phần tử thứ 2 và thứ ba trong mỗi hàng của tệp dữ liệu.
Giải pháp này giả định rằng bạn biết giá trị lớn nhất của x trong datafile của bạn (trong trường hợp này, đó là 3-1 = 2 - [ba điểm, 0,1,2]). Nếu bạn không biết số lượng datapoints, bạn có thể nhận được rằng bằng cách sử dụng phép thuật vỏ, hoặc trực tiếp từ gnuplot. Cách thứ nhất dễ dàng hơn một chút, mặc dù không phải là di động. Tôi sẽ hiển thị cả:
XMAX=`wc -l datafile | awk '{print $1-1}'`
scale_x(x,xmin,xmax,datamin,datamax)=xmin+(xmax-xmin)/(datamax-datamin)*x
plot 'test.dat' using (scale_x($0,50,60,0,XMAX)):1 w lines title "scaled xrange"
Cách thứ hai, chúng ta cần phải thực hiện hai đường chuyền qua các dữ liệu và để gnuplot nhặt tối đa:
set term push #save terminal settings
set term unknown #use unknown terminal -- doesn't actually make a plot, only collects stats
plot 'test.dat' u 0:1 #collect stats
set term pop #restore terminal settings
XMIN=GPVAL_X_MIN #should be 0, set during our first plot command
XMAX=GPVAL_X_MAX #should be number of lines-1, collected during first plot command
scale_x(x,xmin,xmax,datamin,datamax)=xmin+(xmax-xmin)/(datamax-datamin)*x
plot 'test.dat' using (scale_x($0,50,60,XMIN,XMAX)):1 w lines title "scaled xrange"
Tôi cho rằng cho đầy đủ, tôi nên nói rằng điều này cũng dễ dàng hơn trong gnuplot 4.6 (Tôi không có nó được cài đặt ngay bây giờ, vì vậy phần tiếp theo này xuất phát từ sự hiểu biết của tôi về các tài liệu):
stats 'test.dat' using 0:1 name "test_stats"
#at this point, your xmin/xmax are stored in the variables "test_stats_x_min"/max
XMIN=test_stats_x_min
XMAX=test_stats_x_max
scale_x(x,xmin,xmax,datamin,datamax)=xmin+(xmax-xmin)/(datamax-datamin)*x
plot 'test.dat' using (scale_x($0,50,60,XMIN,XMAX)):1 w lines title "scaled xrange"
Gnuplot 4.6 trông khá tuyệt. Có lẽ tôi sẽ sớm bắt đầu chơi với nó khá sớm.
Nội dung của '../ myFile.final' là gì? – mgilson
Nó nằm ngoài thư mục hiện tại! một cách nội dung của tôi là sự thật! – Mehdi