在pygame中绘制图纸

时间:2018-05-29 12:44:04

标签: python matplotlib pygame plotly

我有一个数字(价格确切)/每个月的字典:

{'2018-05-26': Decimal('7334.1638'), '2018-05-27': Decimal('7344.9675'), '2018-05-28': Decimal('7105.6725')}

我可以使用plotly轻松地绘制这个,并且情节看起来像这样: Plot

我希望此图表在pygame中显示为图形。我有几个关于如何在pygame中显示matplotlib数据的例子,但那些只是复制/粘贴图,你不能与环境进行交互。我想要做的是让这个剧情成为pygame中的游戏环境。

让我们说如果我想要一辆汽车像这样的小山在这个地块上奔跑。此外,由于我的列表是动态的,所以我需要它是实时的。关于如何实现这一目标的任何建议都会有所帮助。

1 个答案:

答案 0 :(得分:0)

我使用了来自 pygame wiki 的这个方法 - http://www.pygame.org/wiki/MatplotlibPygame 它将 matplotlib 中的 Grapgh 渲染为位图,然后将其转换为字符串,然后使用此字符串在 pygame 中创建带有图像的表面。

import matplotlib
matplotlib.use("Agg")

import matplotlib.backends.backend_agg as agg


import pylab

fig = pylab.figure(figsize=[4, 4], # Inches
                   dpi=100,        # 100 dots per inch, so the resulting buffer is 400x400 pixels
                   )
ax = fig.gca()
ax.plot([1, 2, 4])

canvas = agg.FigureCanvasAgg(fig)
canvas.draw()
renderer = canvas.get_renderer()
raw_data = renderer.tostring_rgb()

import pygame
from pygame.locals import *

pygame.init()

window = pygame.display.set_mode((600, 400), DOUBLEBUF)
screen = pygame.display.get_surface()

size = canvas.get_width_height()

surf = pygame.image.fromstring(raw_data, size, "RGB")
screen.blit(surf, (0,0))
pygame.display.flip()

crashed = False
while not crashed:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            crashed = True