ในงานวิจัยบางชิ้น นักวิจัยใช้โมดูล GPS เพื่อติดตามพฤติกรรมของสัตว์ พวกเขาสามารถติดตามว่าพวกเขาเดินทางไปที่ต่างๆ ในช่วงเวลาต่างๆ ของปีได้อย่างไร
ในตัวอย่างนี้ เราใช้ชุดข้อมูลประเภทนั้นเพื่อทำความเข้าใจว่านกเคลื่อนที่ไปในสถานที่ต่างๆ อย่างไร ในชุดข้อมูลนี้มีรายละเอียดตำแหน่งจากโมดูล GPS ที่จัดเก็บไว้ ชุดข้อมูลที่สมบูรณ์อยู่ในรูปแบบ CSV ในไฟล์นั้นมีฟิลด์ต่างๆ อันแรกคือ Bird Id ตามด้วย date_time ละติจูด ลองจิจูด และความเร็ว
สำหรับงานนี้ เราต้องการโมดูลบางส่วนที่สามารถใช้ในโค้ด Python ได้
เรากำลังใช้โมดูล matplotlib, pandas และ cartopy หากต้องการติดตั้งลงใน Anaconda โปรดปฏิบัติตามคำสั่งเหล่านี้ สิ่งเหล่านี้จะติดตั้งโมดูลที่สำคัญอื่นๆ เมื่อจำเป็น
conda install -c conda-forge matplotlib conda install -c anaconda pandas conda install -c scitools/label/archive cartopy
ตอนแรกเราจะพล็อตตำแหน่งโดยใช้ค่าละติจูดและลองจิจูด มีนกสองตัวในชุดข้อมูล ดังนั้นการใช้สีที่ต่างกันสองสี เราจึงสามารถเห็นภาพตำแหน่งการติดตามได้
โค้ดตัวอย่าง
import pandas as pd from matplotlib import pyplot as plt df = pd.read_csv('bird_tracking.csv') cr = df.groupby('bird_id').groups cr_groups = df.groupby('bird_id') group_list = [] for group in cr: group_list.append(group) plt.figure(figsize=(7, 7)) #Create graph from dataset using the first group of cranes for group in group_list: x,y = cr_groups.get_group(group).longitude, cr_groups.get_group(group).latitude plt.plot(x,y, marker='o', markersize=2) plt.show()
ผลลัพธ์
ตอนนี้ เราสามารถพล็อตผลลัพธ์การติดตามนี้บนแผนที่ทางภูมิศาสตร์จริงเพื่อให้เห็นภาพวิธีการที่แน่นอน ซึ่งนกเหล่านั้นใช้
โค้ดตัวอย่าง
import pandas as pd import cartopy.crs as ccrs import cartopy.feature as cfeature import matplotlib.pyplot as plt df = pd.read_csv("bird_tracking.csv") bird_id = pd.unique(birddata.bird_id) # Setup the projection to display the details into map projection = ccrs.Mercator() plt.figure(figsize=(7,7)) axes = plt.axes(projection=projection) axes.set_extent((-30.0, 25.0, 50.0, 10.0)) axes.add_feature(cfeature.LAND) axes.add_feature(cfeature.OCEAN) axes.add_feature(cfeature.COASTLINE) axes.add_feature(cfeature.BORDERS, linestyle=':') for id in bird_id: index = df['bird_id'] == id x = df.longitude[index] y = df.latitude[index] axes.plot(x,y,'.', transform=ccrs.Geodetic(), label=id) plt.legend(loc="lower left") plt.show()