Dee*_*gen 8 python pygame matplotlib python-3.x
我在这里有一个很大的问题——我想大多数人都不会喜欢这个问题,而且我可能会因为自己是菜鸟而受到批评,但无论如何,我还是要问这个问题。
我正在尝试使用 matplotlib 在我的 pygame 程序中实现条形图。我设法非常简单地做到这一点,但没有使用 pygame。
我已经成功制作了一个条形图,但无法将其放入 pygame 中:
names = ['a', 'b', 'c']
values = [1, 10, 100]
plt.figure(1, figsize=(9, 3))
plt.bar(names, values)
plt.show()
Run Code Online (Sandbox Code Playgroud)
我想在 pygame 中将其实现到我的游戏中,但老实说我不知道从哪里开始。这是下周到期的一个项目。谢谢。
matplotlib
默认用于tkinter
显示图表。它也可以使用PyQt
or wxPython
- 它们被称为"backends"
- 但它没有用作PyGame
后端的方法。
我发现的唯一内容(使用 Google)是PyGame wiki 中的示例
它将 matplotlib 图形渲染为位图,然后将此位图转换为可用于创建Surface
图像的字符串。
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
Run Code Online (Sandbox Code Playgroud)
Fankly 我不会使用 matplotlib 来创建图形 - 特别是它不是交互式的。在 PyGame 中创建自己的图表可能很容易。
归档时间: |
|
查看次数: |
13495 次 |
最近记录: |