Trong một số công trình nghiên cứu, các nhà nghiên cứu sử dụng module GPS để theo dõi hành vi động vật. Chúng có thể theo dõi cách chúng di chuyển đến các nơi khác nhau vào các thời điểm khác nhau trong năm.
Trong ví dụ này chúng ta sử dụng loại tập dữ liệu đó để có ý tưởng, chim di chuyển như thế nào ở các nơi khác nhau. Trong tập dữ liệu này có chi tiết vị trí từ module GPS được lưu trữ. Tập dữ liệu hoàn chỉnh ở dạng CSV. Trong tệp đó, có các trường khác nhau. Trường đầu tiên là Bird Id, sau đó date_time, Latitude, longitude và speed.
Cho nhiệm vụ này, chúng ta cần một số module có thể dùng trong mã Python.
Chúng ta đang sử dụng matplotlib, pandas, và cartopy. Để cài đặt chúng vào Anaconda, vui lòng làm theo các lệnh sau. Chúng sẽ cài đặt một số module quan trọng khác khi cần.
conda install -c conda-forge matplotlib conda install -c anaconda pandas conda install -c scitools/label/archive cartopy
Trước tiên chúng ta sẽ vẽ vị trí sử dụng giá trị latitude và longitude. Có hai chim trong tập dữ liệu, vì vậy sử dụng hai màu khác nhau, chúng ta có thể hình ảnh hóa các vị trí theo dõi.
Mã ví dụ
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))
# Tạo đồ thị từ tập dữ liệu sử dụng nhóm đầu tiên của chim
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()
Đầu ra

Bây giờ chúng ta có thể vẽ kết quả theo dõi này trên Bản đồ Địa lý thực tế để hình dung con đường chính xác được sử dụng bởi những con chim đó.
Mã ví dụ
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)
# Thiết lập chiếu để hiển thị chi tiết lên bản đồ
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()
Đầu ra
