Как конвертировать системы координат между pygame / pybpox2d и matlpotlib - PullRequest
1 голос
/ 04 апреля 2019

Сильно отредактировано:

Я пытаюсь использовать matplotlib для построения и анализа поведения агента в симуляции, которая запускается с использованием pygame.Я попытался построить в Matplotlib, используя значения пикселей, которые Pygame использует для рисования изображения.Проблема в том, что представление pygame и графики matplotlib немного отличаются, белые и цветные пятна в верхней половине не совпадают, и я не могу понять, почему.Следующий код создает график matplotlib, используя значения пикселей, которые использует pygame:

import matplotlib.pyplot as plt
patch_positions = [(401.0, 212.0),
                   (266.0, 455.0),
                   (77.0, 293.0),
                   (131.0, 104.0),
                   (347.0, 563.0),
                   (104.0, 579.0),
                   (482.0, 104.0),
                   (563.0, 185.0),
                   (563.0, 536.0)]

reward_positions = [(131.0, 158.0),
                   (293.0, 482.0),
                   (455.0, 185.0)]

patch_colors = [(0.627, 0.627, 0.627),
                    (0, 1, 0),
                    (0, 0, 1),
                    (1, 0, 0),
                    (0.2, 0.8, 1),
                    (0.4, 0.2, 0),
                    (0.3, 0, 0.6),
                    (0, 0.4, 0),
                    (1, 0.2, 0.6)]

fig, ax = plt.subplots(figsize=figsize, dpi=100)

ax.set_facecolor("black")
ax.set_xlim(left=0, right=640)
ax.set_ylim(bottom=0, top=640)

for pos,col in zip(patch_positions,patch_colors):
    patch = plt.Circle(pos, 27, color=col)
    ax.add_artist(patch)

for pos in reward_positions:
    patch = plt.Circle(pos, 14, color=(1,1,1))
    ax.add_artist(patch)

ax.invert_yaxis()
plt.show()

pygame

matplotlib

...