ฉันจะใช้ gnuplot เพื่อพล็อตลูกศรเวกเตอร์ 2d อย่างง่ายได้อย่างไร

นี่เป็นครั้งแรกที่ฉันพยายามใช้ gnuplot และฉันไม่พบคำแนะนำใด ๆ เกี่ยวกับวิธีการทำให้สำเร็จ สิ่งที่ใกล้เคียงที่สุดที่ฉันพบคือ:

http://gnuplot.sourceforge.net/docs_4.2/node259.html

พล็อต 'file.dat' โดยใช้ 1:2:3:4 โดยมีหัวเวกเตอร์เต็ม lt 2

แต่ฉันไม่พบคำอธิบายเกี่ยวกับ "file.dat"

ใครสามารถยกตัวอย่างง่ายๆ ของวิธีวาดลูกศรเวกเตอร์ 2d ง่ายๆ ได้บ้าง ขอบคุณ.


person Mirrana    schedule 14.05.2013    source แหล่งที่มา


คำตอบ (2)


gnuplot มีความช่วยเหลือ/เอกสารประกอบที่ดีมาก เพียงพิมพ์ help plot หรือ help vector เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการพล็อตเวกเตอร์ใน gnuplot

รูปแบบ 2D vectors ดึงเวกเตอร์จาก (x,y) ถึง (x+xdelta,y+ydelta)

มีการวาดหัวลูกศรเล็กๆ ที่ส่วนท้ายของเวกเตอร์แต่ละตัว

4 คอลัมน์: x y xdelta ydelta

ซึ่งหมายความว่า ไฟล์อินพุตของคุณควรมี 4 คอลัมน์ โดยที่สองคอลัมน์แรกกำหนดตำแหน่งเริ่มต้น (x,y) ของเวกเตอร์/ลูกศร และสองทิศทางสุดท้าย (x,y):

# file.dat
0   0   .5  .5
0   1   -.5 .5
1   1   1    0

ตอนนี้พิมพ์คำสั่งต่อไปนี้

plot "file.dat" using 1:2:3:4 with vectors filled head lw 3

ให้ผลลัพธ์ต่อไปนี้: Plotting vector

การวาดเวกเตอร์ด้วยคำสั่ง set arrow

ลองใช้คำสั่ง set arrow หากคุณต้องการวาดเวกเตอร์/ลูกศรเพียงไม่กี่ตัว (เช่น เพื่อเน้นบางจุดในโครงเรื่อง)

  set arrow 1 from pi/2,1 to pi/2,0 
  set arrow 2 from pi*3/2,-1 to pi*3/2,0 
  plot[0:2*pi] sin(x)

ตัวอย่างชุดลูกศร

person psibar    schedule 14.05.2013

คุณสามารถสร้าง 'file.dat' ในสเปรดชีตโดยบันทึกเป็นข้อความและวางไว้ในเส้นทางของ gnuplot โดยใช้คำสั่ง cd เพื่อชี้ gnuplot ไปยังตำแหน่งของมัน หากไม่เห็นด้วยกับคุณ ให้ดูตัวอย่างโดยใช้ '+' และ '++' และ '-' ในคู่มือ gnuplot นี่คือ "ไฟล์ข้อมูลเสมือน" โปรดทราบว่าสองจุดแรกมีไว้สำหรับจุดข้อมูลหนึ่งและสองคอลัมน์ เช่น (x) หรือ (x,y) คุณจะต้องใช้ $1 และ $2 เป็นตัวแปรในการคำนวณ dx และ dy จำเป็นต้องตั้งค่าตัวแปร xrange และ yrange และ isosamples สำหรับความหนาแน่นเพื่อให้สิ่งนี้ทำงานได้

สิ่งที่ต้องการ....

set isosamples 30
set samples 30
set xrange [-10:10]
set yrange [-10:10]
plot '++' using 1:2:(0.1*sin($1)):(0.1*cos($2)) with vectors 
person userRoom237    schedule 23.05.2013