ใน gnuplot วิธีการลงจุดด้วยบรรทัด แต่ข้ามจุดข้อมูลที่ขาดหายไป


20

ฉันมีค่าที่เกี่ยวข้องกับแต่ละวันเช่น:

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

เมื่อพล็อตข้อมูลนี้ใน gnuplot ด้วยบรรทัดจุดข้อมูลจะถูกเชื่อมต่ออย่างดี น่าเสียดายที่จุดข้อมูลมากกว่าหนึ่งสัปดาห์อาจหายไป Gnuplot วาดเส้นยาวในช่วงเวลาเหล่านี้ ฉันจะทำให้ gnuplot เชื่อมต่อคะแนนในวันติดต่อกันได้อย่างไร

โซลูชันที่ต้องมีการประมวลผลข้อมูลล่วงหน้านั้นเป็นเรื่องที่ดีเพราะฉันใช้สคริปต์ได้อย่างราบรื่น

นี่คือสิ่งที่ฉันใช้:

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"

ตัวอย่าง: ตัวอย่าง gnuplot


นี่คือรูปภาพของปัญหา: i.stack.imgur.com/aYH4N.png (ไม่สามารถเพิ่มภาพในโพสต์ด้วยเหตุผลบางอย่าง) ฉันต้องการให้พื้นที่วงกลมว่างเปล่า
Anna

ยินดีต้อนรับสู่ superuser คุณทำไม่ได้เพราะคุณยังไม่ได้รวบรวมชื่อเสียงมากพอในเว็บไซต์นี้ หากคุณไม่พอใจกับการเปลี่ยนแปลงของฉันคุณสามารถยกเลิกการเปลี่ยนแปลงได้อย่างแน่นอน (หรือแก้ไขอีกครั้ง)
Baarn

คำตอบ:


16

ใส่เรคคอร์ดที่ว่างเปล่า (บรรทัดว่าง) ที่ไม่มีข้อมูล จากเอกสาร :

ระเบียนว่างเดี่ยวกำหนดความไม่ต่อเนื่องในพล็อต บรรทัดจะไม่เข้าร่วมจุดคั่นด้วยระเบียนว่างเปล่า (ถ้าพวกเขาถูกพล็อตด้วยสไตล์เส้น)


1
ขอบคุณสิ่งนี้ใช้ได้กับความไม่ต่อเนื่องในทุกซีรี่ส์ จะเป็นอย่างไรถ้าฉันมีความไม่ต่อเนื่องในซีรีส์หนึ่ง แต่ไม่ใช่ซีรีย์อื่น
Anna

8
มันทำงานได้โดยใส่เครื่องหมายขีดคั่นแทนค่า
Anna

สำหรับฉัน - มันเป็นเส้นที่มีอักขระเว้นวรรค 2 ตัว
3kstc

9

คุณสามารถใช้สตริงใด ๆ ที่ไม่ใช่ตัวเลขเป็นค่าสำหรับจุดข้อมูลที่หายไปหรือระบุสตริงข้อมูลที่ขาดหายไปโดยใช้set datafile missingคำสั่ง

หากคุณวางแผนเส้นโดยใช้

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

จากนั้น Gnuplot จะเว้นช่องว่าง


2

คุณยังสามารถทำสิ่งนี้เพื่อสร้างช่องว่างโดยอัตโนมัติเมื่อระยะห่างระหว่างค่า x เกินเกณฑ์:

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

คุณจะต้องปรับค่าเริ่มต้นของ "ก่อนหน้า" และ "ปัจจุบัน" และเกณฑ์ ("7200" ในตัวอย่างด้านบน)

ฟังก์ชัน "yornothing" ใช้ฟังก์ชัน "shift" เพื่อเก็บค่าก่อนหน้าหนึ่งค่าของ x ทุกครั้งที่เรียกว่า yornothing มันจะส่งกลับค่า y หรือ "0/0" ขึ้นอยู่กับว่าค่าสัมบูรณ์ของความแตกต่างระหว่าง x และค่าก่อนหน้านั้นเกินกว่าขีด จำกัด

ค่า 0/0 จะบอก gnuplot ให้ละเว้นจุดนั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.