Trong gnuplot, làm thế nào để vẽ đồ thị với các dòng nhưng bỏ qua các điểm dữ liệu bị thiếu?


20

Tôi đã có một giá trị liên quan đến mỗi ngày, như vậy:

120530    70.1
120531    69.0
120601    69.2
120602    69.5
# and so on for 200 lines

Khi vẽ dữ liệu này trong gnuplot với các dòng, các điểm dữ liệu được kết nối độc đáo. Thật không may, tại các địa điểm trong một tuần của các điểm dữ liệu có thể bị thiếu. Gnuplot vẽ những hàng dài trong những khoảng thời gian này. Làm cách nào tôi có thể khiến gnuplot chỉ kết nối các điểm trong những ngày liên tiếp?

Các giải pháp yêu cầu tiền xử lý dữ liệu đều ổn, vì tôi đã làm mịn nó với một tập lệnh.

Đây là những gì tôi sử dụng:

set xdata time
set timefmt "%y%m%d"
plot "vikt_ma.txt" using 1:2 with lines title "first line", \\
     ""            using 1:3 with lines title "second line"

Thí dụ: ví dụ gnuplot


Dưới đây là hình ảnh của vấn đề: i.stack.imgur.com/aYH4N.png (không thể thêm hình ảnh vào bài đăng vì một số lý do). Tôi muốn khu vực được khoanh tròn để trống.
Anna

Chào mừng bạn đến với siêu người dùng. Bạn không thể bởi vì bạn chưa thu thập đủ danh tiếng trên trang web này. Nếu bạn không hài lòng với những thay đổi của tôi, tất nhiên bạn có thể hoàn nguyên chúng (hoặc chỉnh sửa lại).
Baarn

Câu trả lời:


16

Đặt một bản ghi trống (dòng trống) khi không có dữ liệu. Từ các tài liệu :

Hồ sơ trống duy nhất chỉ định sự không liên tục trong một âm mưu; không có dòng nào sẽ nối các điểm được phân tách bằng một bản ghi trống (nếu chúng được vẽ với kiểu đường kẻ).


1
Cảm ơn, điều này hoạt động cho sự không liên tục trong tất cả các loạt. Điều gì về nếu tôi có một gián đoạn trong một loạt, nhưng không phải là khác?
Anna

8
Nó hoạt động bằng cách đặt dấu gạch ngang thay vì các giá trị.
Anna

Đối với tôi - đó là một dòng có 2 ký tự không gian.
3kstc

9

Bạn có thể sử dụng bất kỳ chuỗi nào không phải là số làm giá trị cho các điểm dữ liệu bị thiếu hoặc chỉ định rõ ràng một chuỗi dữ liệu bị thiếu bằng cách sử dụng set datafile missinglệnh.

Nếu sau đó bạn vẽ các đường bằng cách sử dụng

plot "vikt_ma.txt" using 1:($2) with lines title "first line"

sau đó Gnuplot sẽ để lại một khoảng trống.


2

Bạn cũng có thể làm một cái gì đó như thế này để tự động tạo ra các khoảng trống khi khoảng cách giữa các giá trị x vượt quá một số ngưỡng:

previous=1
current=1
shift(x) = (previous=current, current=x)
yornothing(x,y) = ( shift(x), abs(x-previous)<7200?y:sqrt(0/0))

plot "file.dat" using 1:(yornothing($1,$2)) with lines

Bạn sẽ cần điều chỉnh các giá trị ban đầu của "trước" và "hiện tại" và ngưỡng ("7200" trong ví dụ trên).

Hàm "yornellow" sử dụng chức năng "shift" để lưu trữ một giá trị trước đó của x. Mỗi lần gọi là yornellow, nó trả về giá trị của y hoặc "0/0", tùy thuộc vào việc giá trị tuyệt đối của chênh lệch giữa x và giá trị trước đó có vượt quá ngưỡng hay không.

Giá trị 0/0 cho gnuplot bỏ qua điểm đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.