python - 使用 Python 在图像上绘制从 Unity 获取的坐标
问题描述
我在 Unity 中收集播放器的数据位置,并将它们保存在 .csv 文件中。特别是我收集了游戏中玩家的 x 和 y 位置。
然后我需要在图像上绘制这些点,即游戏地图,以显示玩家在其中的位置。我正在使用Python
,特别是matplotlib
和PIL
,但我遇到了一些问题。代码如下:
from PIL import Image as img
from PIL import ImageDraw as dr
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
filename = 'player20210325-0.csv'
delimiter = ';'
domus_map_path = 'map.png'
data = pd.read_csv(filename, sep = delimiter, names=['time', 'x', 'y', 'action'], header=None)
x = data['x']
y = data['y']
domus_map = img.open(domus_map_path)
domus_map_copy = domus_map.copy()
fig, ax = plt.subplots()
ax.imshow(domus_map_copy, extent = [0, 70, -13, 13])
for p, q in zip(x, y):
x_coord = p
y_coord = q
plt.scatter([x_coord], [y_coord])
plt.xlabel('X')
plt.ylabel('Y')
plt.show
这给我带来了问题;特别是,情节如下图所示:
我不知道是否清楚;问题是 y_coordinates 大约为 0,并假设负值和正值,但它们总是在增长。为了更清楚,我使用以下代码绘制 x_coordinate 和 y_coordinate 随着时间的推移:
plt.plot(time, x, color = 'b', linewidth = '3', label = 'x_coord over time')
plt.plot(time, y, color = 'k', linewidth = '3', label = 'y_coord over time')
plt.tight_layout()
plt.xlabel('time')
plt.legend()
plt.show()
结果如下:
问题是在 y 轴上,数据不是按从小到大的顺序设置的,而是根据数组内的顺序设置的。
有人可以帮助我吗?
解决方案
推荐阅读
- java - 尝试连接到 MYSQL 数据库时出现 EJBTransactionRolledbackException
- mysql - 如何获取 MySql 数据库查询日志
- javascript - 为不同语言编辑字体的方法——HTML、CSS、JQUERY
- angular - 为什么“setAttribute”函数不适用于变量值?
- python - 这个熊猫代码是否等效?很快
- php - 属性或方法“订阅”未在实例上定义,但在 render.in Vue,js 期间引用
- android - RecyclerView 适配器返回零子
- android - ERR_TARGET_NOT_FOUND:未找到目标
- sql - 无法通过 informatica 中的查找加载不同的记录
- php - FreeAgent oAuth2 无法使用 Light PHP 包装器更新联系人