可以在matplotlib中绘制Go-Board吗? 我不会向你展示我可怕的尝试(包括一些补丁),只要你不要求它们,我希望你能提出更好的想法。
甚至更好:有一个图书馆,或者有人已编程吗? 那太好了!
(为什么有人需要在matplotlib中使用GO板?有很多原因。我的AI无论如何都适用于python / C ++以及性能的一些可视化,这是在matplotlib中绘制的。现在可以导出/导入.sgf,但这包括一个外部查看器,如果需要很多图表,它会很慢。)
答案 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)
给出这个:
如果你不喜欢背景,你甚至可以使用imshow
在那里放一张漂亮的照片或任何你需要的照片。
一件好事是,如果你拿走ax.plot
返回的对象,你可以删除它们并重新绘制板,而不需要做很多工作。
ax.lines.remove(s1)
或只是
s1.remove()
第一个显示正在发生的事情;线对象从线列表中删除,第二个对象更快,因为线对象知道它的父对象。
其中任何一个,它已经消失了。 (您可能需要致电draw
查看更改。)
在python中有很多方法可以做,而matplotlib
也不例外。根据{{1}}的建议,线条由网格替换,圆形标记用圆形补丁替换。此外,现在黑色和白色的石头是从原型中创建的。
tcaswell
结果基本相同。