使用Matplotlib绘制Go-Board

时间:2014-07-03 21:24:07

标签: python matplotlib

可以在matplotlib中绘制Go-Board吗? 我不会向你展示我可怕的尝试(包括一些补丁),只要你不要求它们,我希望你能提出更好的想法。

甚至更好:有一个图书馆,或者有人已编程吗? 那太好了!

(为什么有人需要在matplotlib中使用GO板?有很多原因。我的AI无论如何都适用于python / C ++以及性能的一些可视化,这是在matplotlib中绘制的。现在可以导出/导入.sgf,但这包括一个外部查看器,如果需要很多图表,它会很慢。)

1 个答案:

答案 0 :(得分:6)

不确定。可以绘制任何东西,只需要大量的代码......

import matplotlib.pyplot as plt

# create a 8" x 8" board
fig = plt.figure(figsize=[8,8])
fig.patch.set_facecolor((1,1,.8))

ax = fig.add_subplot(111)

# draw the grid
for x in range(19):
    ax.plot([x, x], [0,18], 'k')
for y in range(19):
    ax.plot([0, 18], [y,y], 'k')

# scale the axis area to fill the whole figure
ax.set_position([0,0,1,1])

# get rid of axes and everything (the figure background will show through)
ax.set_axis_off()

# scale the plot area conveniently (the board is in 0,0..18,18)
ax.set_xlim(-1,19)
ax.set_ylim(-1,19)

# draw Go stones at (10,10) and (13,16)
s1, = ax.plot(10,10,'o',markersize=30, markeredgecolor=(0,0,0), markerfacecolor='w', markeredgewidth=2)
s2, = ax.plot(13,16,'o',markersize=30, markeredgecolor=(.5,.5,.5), markerfacecolor='k', markeredgewidth=2)

给出这个:

enter image description here

如果你不喜欢背景,你甚至可以使用imshow在那里放一张漂亮的照片或任何你需要的照片。

一件好事是,如果你拿走ax.plot返回的对象,你可以删除它们并重新绘制板,而不需要做很多工作。

ax.lines.remove(s1)

或只是

s1.remove()

第一个显示正在发生的事情;线对象从线列表中删除,第二个对象更快,因为线对象知道它的父对象。

其中任何一个,它已经消失了。 (您可能需要致电draw查看更改。)


在python中有很多方法可以做,而matplotlib也不例外。根据{{​​1}}的建议,线条由网格替换,圆形标记用圆形补丁替换。此外,现在黑色和白色的石头是从原型中创建的。

tcaswell

结果基本相同。