In [23]:
%matplotlib inline

In [24]:
from __future__ import division

import matplotlib.pyplot as plt

from matplotlib.patches import Circle
from string import ascii_uppercase
from six.moves import range, zip
from itertools import product

Let's start off with a square figure.


In [25]:
fig = plt.figure(figsize=(5, 5))
ax = fig.add_subplot(1, 1, 1)
plt.show()


Give it a nice wooden color http://encycolorpedia.com/c19a6b


In [26]:
BOARD_COLOR = '#d7be9f'

In [27]:
fig = plt.figure(figsize=(5, 5), facecolor=BOARD_COLOR)

ax = fig.add_subplot(1, 1, 1)

plt.show()


The default background color for Axes is white. Let's propagate the figure background color by making the axis background color transparent, or 'none'


In [28]:
fig = plt.figure(figsize=(5, 5), facecolor=BOARD_COLOR)
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')

plt.show()


Set the ticks to reflect 19 by 19 board


In [29]:
fig = plt.figure(figsize=(5, 5), facecolor=BOARD_COLOR)
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')
ax.set_xticks(range(19))
ax.set_yticks(range(19))

plt.show()


Add gridlines


In [30]:
fig = plt.figure(figsize=(5, 5), facecolor=BOARD_COLOR)
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')
ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)

plt.show()


Generate and plot the hoshi (star) points


In [31]:
hoshi = list(product(range(3, 19, 6), repeat=2))
hoshi


Out[31]:
[(3, 3), (3, 9), (3, 15), (9, 3), (9, 9), (9, 15), (15, 3), (15, 9), (15, 15)]

In [32]:
hoshi_rows, hoshi_cols = zip(*hoshi)
hoshi_rows, hoshi_cols


Out[32]:
((3, 3, 3, 9, 9, 9, 15, 15, 15), (3, 9, 15, 3, 9, 15, 3, 9, 15))

In [33]:
fig = plt.figure(figsize=(5, 5), facecolor=BOARD_COLOR)
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')
ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)
ax.plot(hoshi_rows, hoshi_cols, 'ko')

plt.show()


Need to set the x and y lims... Go boards are ordinarily read from the top-left.


In [34]:
fig = plt.figure(figsize=(5, 5), facecolor=BOARD_COLOR)
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')
ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)
ax.plot(hoshi_rows, hoshi_cols, 'ko')

ax.set_xlim((0, 18))
ax.set_ylim((18, 0))

plt.show()


The column labels are normally at the top.


In [35]:
fig = plt.figure(figsize=(5, 5), facecolor=BOARD_COLOR)
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')

ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)
ax.plot(hoshi_rows, hoshi_cols, 'ko')

ax.set_xlim((0, 18))
ax.set_ylim((18, 0))

ax.xaxis.set_tick_params(labelbottom='off', labeltop='on')

plt.show()


The column labels are often the letters of the alphabet, and not just in the Western world of Go. Otherwise, Chinese characters representing the numbers are sometimes used as well, but along the rows.


In [36]:
ascii_uppercase


Out[36]:
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

In [37]:
fig = plt.figure(figsize=(5, 5), facecolor=BOARD_COLOR)
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')

ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)
ax.plot(hoshi_rows, hoshi_cols, 'ko')

ax.set_xlim((0, 18))
ax.set_ylim((18, 0))

ax.xaxis.set_tick_params(labelbottom='off', labeltop='on')
ax.set_xticklabels(ascii_uppercase[:19])

plt.show()


The hoshi are massive... Let's make them smaller by setting markersize for now. I don't think this will scale with figsize, so well need to revisit this later. Patches apparently do scale.


In [38]:
fig = plt.figure(figsize=(5, 5), facecolor=BOARD_COLOR)
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')

ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)
ax.plot(hoshi_rows, hoshi_cols, 'ko', markersize=3)

ax.set_xlim((0, 18))
ax.set_ylim((18, 0))

ax.xaxis.set_tick_params(labelbottom='off', labeltop='on')
ax.set_xticklabels(ascii_uppercase[:19])
ax.set_yticklabels(range(1, 19+1))

plt.show()


The stones!


In [39]:
fig = plt.figure(figsize=(5, 5), facecolor=BOARD_COLOR)
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')

ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)
ax.plot(hoshi_rows, hoshi_cols, 'ko', markersize=3)

ax.set_xlim((0, 18))
ax.set_ylim((18, 0))

ax.xaxis.set_tick_params(labelbottom='off', labeltop='on')

ax.set_xticklabels(ascii_uppercase[:19])
ax.set_yticklabels(range(1, 19+1))

ax.add_patch(Circle((9, 9), .475, facecolor='k'))

ax.add_patch(Circle((9, 10), .475, facecolor='w'))
ax.add_patch(Circle((8, 9), .475, facecolor='w'))
ax.add_patch(Circle((9, 8), .475, facecolor='w'))

plt.show()


The white stones seem to be transparent, but this is not the issue. It has to do with the order the elements are drawn: http://stackoverflow.com/questions/5390699/patches-i-add-to-my-graph-are-not-opaque-with-alpha-1-why


In [40]:
fig = plt.figure(figsize=(5, 5), facecolor=BOARD_COLOR)
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')

ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)
ax.plot(hoshi_rows, hoshi_cols, 'ko', markersize=3)

ax.set_xlim((0, 18))
ax.set_ylim((18, 0))

ax.xaxis.set_tick_params(labelbottom='off', labeltop='on')

ax.set_xticklabels(ascii_uppercase[:19])
ax.set_yticklabels(range(1, 19+1))

ax.add_patch(Circle((9, 9), .475, facecolor='k', zorder=10))

ax.add_patch(Circle((9, 10), .475, facecolor='w', zorder=10))
ax.add_patch(Circle((8, 9), .475, facecolor='w', zorder=10))
ax.add_patch(Circle((9, 8), .475, facecolor='w', zorder=10))

plt.show()


Let's enlarge it to make sure everything scales well. This confirms our earlier suspicion that ordinary markers do not scale, and patches do.


In [41]:
fig = plt.figure(figsize=(10, 10), facecolor=BOARD_COLOR)
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')

ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)
ax.plot(hoshi_rows, hoshi_cols, 'ko', markersize=3)

ax.set_xlim((0, 18))
ax.set_ylim((18, 0))

ax.xaxis.set_tick_params(labelbottom='off', labeltop='on')

ax.set_xticklabels(ascii_uppercase[:19])
ax.set_yticklabels(range(1, 19+1))

ax.add_patch(Circle((9, 9), .475, facecolor='k', zorder=10))

ax.add_patch(Circle((9, 10), .475, facecolor='w', zorder=10))
ax.add_patch(Circle((9, 8), .475, facecolor='w', zorder=10))
ax.add_patch(Circle((8, 9), .475, facecolor='w', zorder=10))

plt.show()


For Print Publication


In [42]:
fig = plt.figure(figsize=(5, 5))
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')

ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)
ax.plot(hoshi_rows, hoshi_cols, 'ko', markersize=3)

ax.set_xlim((0, 18))
ax.set_ylim((18, 0))

ax.xaxis.set_tick_params(labelbottom='off', labeltop='on')

ax.set_xticklabels(ascii_uppercase[:19])
ax.set_yticklabels(range(1, 19+1))

ax.add_patch(Circle((9, 9), .475, facecolor='k', zorder=10))

ax.add_patch(Circle((9, 10), .475, facecolor='w', zorder=10))
ax.add_patch(Circle((9, 8), .475, facecolor='w', zorder=10))
ax.add_patch(Circle((8, 9), .475, facecolor='w', zorder=10))

plt.show()


Print publications normally have a thicker border.


In [43]:
fig = plt.figure(figsize=(5, 5))
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')

for spine in ax.spines.itervalues():
    spine.set_linewidth(1.5)

ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)
ax.plot(hoshi_rows, hoshi_cols, 'ko', markersize=3)

ax.set_xlim((0, 18))
ax.set_ylim((18, 0))

ax.xaxis.set_tick_params(labelbottom='off', labeltop='on')

ax.set_xticklabels(ascii_uppercase[:19])
ax.set_yticklabels(range(1, 19+1))

ax.add_patch(Circle((9, 9), .475, facecolor='k', zorder=10))

ax.add_patch(Circle((9, 10), .475, facecolor='w', zorder=10))
ax.add_patch(Circle((9, 8), .475, facecolor='w', zorder=10))
ax.add_patch(Circle((8, 9), .475, facecolor='w', zorder=10))

plt.show()


Saving/Exporting

Let's try saving some of our figures.


In [44]:
fig = plt.figure(figsize=(5, 5), facecolor=BOARD_COLOR)
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')

ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)
ax.plot(hoshi_rows, hoshi_cols, 'ko', markersize=3)

ax.set_xlim((0, 18))
ax.set_ylim((18, 0))

ax.xaxis.set_tick_params(labelbottom='off', labeltop='on')

ax.set_xticklabels(ascii_uppercase[:19])
ax.set_yticklabels(range(1, 19+1))

ax.add_patch(Circle((9, 9), .475, facecolor='k', zorder=10))

ax.add_patch(Circle((9, 10), .475, facecolor='w', zorder=10))
ax.add_patch(Circle((9, 8), .475, facecolor='w', zorder=10))
ax.add_patch(Circle((8, 9), .475, facecolor='w', zorder=10))

fig.savefig('test_color1.png')



In [45]:
fig = plt.figure(figsize=(5, 5), facecolor=BOARD_COLOR)
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')

ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)
ax.plot(hoshi_rows, hoshi_cols, 'ko', markersize=3)

ax.set_xlim((0, 18))
ax.set_ylim((18, 0))

ax.xaxis.set_tick_params(labelbottom='off', labeltop='on')

ax.set_xticklabels(ascii_uppercase[:19])
ax.set_yticklabels(range(1, 19+1))

ax.add_patch(Circle((9, 9), .475, facecolor='k', zorder=10))

ax.add_patch(Circle((9, 10), .475, facecolor='w', zorder=10))
ax.add_patch(Circle((9, 8), .475, facecolor='w', zorder=10))
ax.add_patch(Circle((8, 9), .475, facecolor='w', zorder=10))

fig.savefig('test_color2.png', facecolor=fig.get_facecolor())



In [46]:
fig = plt.figure(figsize=(5, 5))
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')

for spine in ax.spines.itervalues():
    spine.set_linewidth(1.5)

ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)
ax.plot(hoshi_rows, hoshi_cols, 'ko', markersize=3)

ax.set_xlim((0, 18))
ax.set_ylim((18, 0))

ax.xaxis.set_tick_params(labelbottom='off', labeltop='on')

ax.set_xticklabels(ascii_uppercase[:19])
ax.set_yticklabels(range(1, 19+1))

ax.add_patch(Circle((9, 9), .475, facecolor='k', zorder=10))

ax.add_patch(Circle((9, 10), .475, facecolor='w', zorder=10))
ax.add_patch(Circle((9, 8), .475, facecolor='w', zorder=10))
ax.add_patch(Circle((8, 9), .475, facecolor='w', zorder=10))

fig.savefig('test_bw.png')


Annotation


In [47]:
fig = plt.figure(figsize=(5, 5), facecolor=BOARD_COLOR)
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')

ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)
ax.plot(hoshi_rows, hoshi_cols, 'ko', markersize=3)

ax.set_xlim((0, 18))
ax.set_ylim((18, 0))

ax.xaxis.set_tick_params(labelbottom='off', labeltop='on')

ax.set_xticklabels(ascii_uppercase[:19])
ax.set_yticklabels(range(1, 19+1))

ax.add_patch(Circle((9, 9), .475, facecolor='k', zorder=10))

ax.add_patch(Circle((9, 10), .475, facecolor='w', zorder=10))
ax.add_patch(Circle((8, 9), .475, facecolor='w', zorder=10))
ax.add_patch(Circle((9, 8), .475, facecolor='w', zorder=10))

ax.text(15, 13, 'a')
ax.text(8, 9, 'b')
ax.text(9, 9, 'c', horizontalalignment='center', verticalalignment='center')

plt.show()



In [48]:
fig = plt.figure(figsize=(5, 5), facecolor=BOARD_COLOR)
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')

ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)
ax.plot(hoshi_rows, hoshi_cols, 'ko', markersize=3)

ax.set_xlim((0, 18))
ax.set_ylim((18, 0))

ax.xaxis.set_tick_params(labelbottom='off', labeltop='on')

ax.set_xticklabels(ascii_uppercase[:19])
ax.set_yticklabels(range(1, 19+1))

ax.add_patch(Circle((9, 9), .475, facecolor='k', zorder=2))

ax.add_patch(Circle((9, 10), .475, facecolor='w', zorder=2))
ax.add_patch(Circle((8, 9), .475, facecolor='w', zorder=2))
ax.add_patch(Circle((9, 8), .475, facecolor='w', zorder=2))

ax.text(15, 13, 'a')
ax.text(8, 9, 'b')
ax.text(9, 9, 'c', horizontalalignment='center', verticalalignment='center')

plt.show()



In [49]:
fig = plt.figure(figsize=(5, 5), facecolor=BOARD_COLOR)
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')

ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)
ax.plot(hoshi_rows, hoshi_cols, 'ko', markersize=3)

ax.set_xlim((0, 18))
ax.set_ylim((18, 0))

ax.xaxis.set_tick_params(labelbottom='off', labeltop='on')

ax.set_xticklabels(ascii_uppercase[:19])
ax.set_yticklabels(range(1, 19+1))

ax.add_patch(Circle((9, 9), .475, facecolor='k', zorder=3))

ax.add_patch(Circle((9, 10), .475, facecolor='w', zorder=3))
ax.add_patch(Circle((8, 9), .475, facecolor='w', zorder=3))
ax.add_patch(Circle((9, 8), .475, facecolor='w', zorder=3))

ax.text(15, 13, 'a')
ax.text(8, 9, 'b')
ax.text(9, 9, 'c', horizontalalignment='center', verticalalignment='center')

plt.show()



In [50]:
fig = plt.figure(figsize=(5, 5), facecolor=BOARD_COLOR)
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')

ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)
ax.plot(hoshi_rows, hoshi_cols, 'ko', markersize=3)

ax.set_xlim((0, 18))
ax.set_ylim((18, 0))

ax.xaxis.set_tick_params(labelbottom='off', labeltop='on')

ax.set_xticklabels(ascii_uppercase[:19])
ax.set_yticklabels(range(1, 19+1))

ax.add_patch(Circle((9, 9), .475, facecolor='k', zorder=3))

ax.add_patch(Circle((9, 10), .475, facecolor='w', zorder=3))
ax.add_patch(Circle((8, 9), .475, facecolor='w', zorder=3))
ax.add_patch(Circle((9, 8), .475, facecolor='w', zorder=3))

ax.text(15, 13, 'a', horizontalalignment='center', verticalalignment='center')
ax.text(8, 9, 'b', horizontalalignment='center', verticalalignment='center')
ax.text(9, 9, 'c', horizontalalignment='center', verticalalignment='center')

plt.show()



In [51]:
fig = plt.figure(figsize=(5, 5), facecolor=BOARD_COLOR)
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')

ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)
ax.plot(hoshi_rows, hoshi_cols, 'ko', markersize=3)

ax.set_xlim((0, 18))
ax.set_ylim((18, 0))

ax.xaxis.set_tick_params(labelbottom='off', labeltop='on')

ax.set_xticklabels(ascii_uppercase[:19])
ax.set_yticklabels(range(1, 19+1))

ax.add_patch(Circle((9, 9), .475, facecolor='k', zorder=3))

ax.add_patch(Circle((9, 10), .475, facecolor='w', zorder=3))
ax.add_patch(Circle((8, 9), .475, facecolor='w', zorder=3))
ax.add_patch(Circle((9, 8), .475, facecolor='w', zorder=3))

ax.text(15, 13, 'a', backgroundcolor=BOARD_COLOR, horizontalalignment='center', verticalalignment='center')
ax.text(8, 9, 'b', horizontalalignment='center', verticalalignment='center')
ax.text(9, 9, 'c', color='w', horizontalalignment='center', verticalalignment='center')

plt.show()



In [52]:
fig = plt.figure(figsize=(5, 5), facecolor=BOARD_COLOR)
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')

ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)
ax.plot(hoshi_rows, hoshi_cols, 'ko', markersize=3)

ax.set_xlim((0, 18))
ax.set_ylim((18, 0))

ax.xaxis.set_tick_params(labelbottom='off', labeltop='on')

ax.set_xticklabels(ascii_uppercase[:19])
ax.set_yticklabels(range(1, 19+1))

ax.add_patch(Circle((9, 9), .475, facecolor='k', zorder=3))

ax.add_patch(Circle((9, 10), .475, facecolor='w', zorder=3))
ax.add_patch(Circle((8, 9), .475, facecolor='w', zorder=3))
ax.add_patch(Circle((9, 8), .475, facecolor='w', zorder=3))

ax.text(15, 13, 'a', fontsize='large', backgroundcolor=BOARD_COLOR, horizontalalignment='center', verticalalignment='center')
ax.text(8, 9, 'b', fontsize='large', horizontalalignment='center', verticalalignment='center')
ax.text(9, 9, 'c', fontsize='large', color='w', horizontalalignment='center', verticalalignment='center')

plt.show()



In [53]:
fig = plt.figure(figsize=(5, 5), facecolor=BOARD_COLOR)
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')

ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)
ax.plot(hoshi_rows, hoshi_cols, 'ko', markersize=3)

ax.set_xlim((0, 18))
ax.set_ylim((18, 0))

ax.xaxis.set_tick_params(labelbottom='off', labeltop='on')

ax.set_xticklabels(ascii_uppercase[:19])
ax.set_yticklabels(range(1, 19+1))

ax.add_patch(Circle((9, 9), .475, facecolor='k', zorder=3))

ax.add_patch(Circle((9, 10), .475, facecolor='w', zorder=3))
ax.add_patch(Circle((8, 9), .475, facecolor='w', zorder=3))
ax.add_patch(Circle((9, 8), .475, facecolor='w', zorder=3))

ax.text(15, 13, 'a', fontsize='large', backgroundcolor=BOARD_COLOR, horizontalalignment='center', verticalalignment='center')
ax.text(8, 9, 'b', fontsize='large', horizontalalignment='center', verticalalignment='center')
ax.text(9, 9, 'c', fontsize='large', color='w', horizontalalignment='center', verticalalignment='center')

plt.show()



In [54]:
fig = plt.figure(figsize=(5, 5), facecolor=BOARD_COLOR)
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')

ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)
ax.plot(hoshi_rows, hoshi_cols, 'ko', markersize=3)

ax.set_xlim((0, 18))
ax.set_ylim((18, 0))

ax.xaxis.set_tick_params(labelbottom='off', labeltop='on')

ax.set_xticklabels(ascii_uppercase[:19])
ax.set_yticklabels(range(1, 19+1))

ax.add_patch(Circle((9, 9), .475, facecolor='k', zorder=3))

ax.add_patch(Circle((9., 10), .475, facecolor='w', zorder=3))
ax.add_patch(Circle((8, 9), .475, facecolor='w', zorder=3))
ax.add_patch(Circle((9, 8), .475, facecolor='w', clip_on=False, zorder=3))

ax.text(15, 13, 'a', fontsize='large', backgroundcolor=BOARD_COLOR, horizontalalignment='center', verticalalignment='center')
ax.text(8, 9, 'b', fontsize='large', horizontalalignment='center', verticalalignment='center')
ax.text(9, 9, 'c', fontsize='large', color='w', horizontalalignment='center', verticalalignment='center')

ax.add_patch(Circle((9, 8), .475, facecolor='w', clip_on=False, zorder=3))


ax.plot([9], [8], marker='^', zorder=10)

plt.show()



In [55]:
fig = plt.figure(figsize=(5, 5), facecolor=BOARD_COLOR)
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')

ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)
ax.plot(hoshi_rows, hoshi_cols, 'ko', markersize=3)

ax.set_xlim((0, 18))
ax.set_ylim((18, 0))

ax.xaxis.set_tick_params(labelbottom='off', labeltop='on')

ax.set_xticklabels(ascii_uppercase[:19])
ax.set_yticklabels(range(1, 19+1))

ax.add_patch(Circle((9, 9), .475, facecolor='k', zorder=3))

ax.add_patch(Circle((9., 10), .475, facecolor='w', zorder=3))
ax.add_patch(Circle((8, 9), .475, facecolor='w', zorder=3))
ax.add_patch(Circle((9, 8), .475, facecolor='w', clip_on=False, zorder=3))

ax.text(15, 13, 'a', fontsize='large', backgroundcolor=BOARD_COLOR, horizontalalignment='center', verticalalignment='center')
ax.text(8, 9, 'b', fontsize='large', horizontalalignment='center', verticalalignment='center')
ax.text(9, 9, 'c', fontsize='large', color='w', horizontalalignment='center', verticalalignment='center')

ax.add_patch(Circle((9, 8), .475, facecolor='w', clip_on=False, zorder=3))


ax.text(9, 8, '$\lambda$', fontsize='large', horizontalalignment='center', verticalalignment='center')

plt.show()



In [56]:
fig = plt.figure(figsize=(5, 5), facecolor=BOARD_COLOR)
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')

ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)
ax.plot(hoshi_rows, hoshi_cols, 'ko', markersize=3)

ax.set_xlim((0, 18))
ax.set_ylim((18, 0))

ax.xaxis.set_tick_params(labelbottom='off', labeltop='on')

ax.set_xticklabels(ascii_uppercase[:19])
ax.set_yticklabels(range(1, 19+1))

ax.add_patch(Circle((9, 9), .475, facecolor='k', zorder=3))

ax.add_patch(Circle((9., 10), .475, facecolor='w', zorder=3))
ax.add_patch(Circle((8, 9), .475, facecolor='w', zorder=3))
ax.add_patch(Circle((9, 8), .475, facecolor='w', clip_on=False, zorder=3))

ax.text(15, 13, 'a', fontsize='large', backgroundcolor=BOARD_COLOR, horizontalalignment='center', verticalalignment='center')
ax.text(8, 9, 'b', fontsize='large', horizontalalignment='center', verticalalignment='center')
ax.text(9, 9, 'c', fontsize='large', color='w', horizontalalignment='center', verticalalignment='center')

ax.add_patch(Circle((9, 8), .475, facecolor='w', clip_on=False, zorder=3))


ax.text(9, 8, '$\\bigtriangledown$', fontsize='large', horizontalalignment='center', verticalalignment='center')

plt.show()



In [58]:
fig = plt.figure(figsize=(8, 8), facecolor=BOARD_COLOR)
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')

ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)
ax.plot(hoshi_rows, hoshi_cols, 'ko', markersize=3)

ax.set_xlim((0, 18))
ax.set_ylim((18, 0))

ax.xaxis.set_tick_params(labelbottom='off', labeltop='on')

ax.set_xticklabels(ascii_uppercase[:19])
ax.set_yticklabels(range(1, 19+1))

ax.add_patch(Circle((9, 9), .475, facecolor='k', zorder=3))

ax.add_patch(Circle((9., 10), .475, facecolor='w', zorder=3))
ax.add_patch(Circle((8, 9), .475, facecolor='w', zorder=3))
ax.add_patch(Circle((9, 8), .475, facecolor='w', clip_on=False, zorder=3))

ax.text(15, 13, 'a', fontsize='large', backgroundcolor=BOARD_COLOR, horizontalalignment='center', verticalalignment='center')
ax.text(8, 9, 'b', fontsize='large', horizontalalignment='center', verticalalignment='center')
ax.text(9, 9, 'c', fontsize='large', color='w', horizontalalignment='center', verticalalignment='center')

ax.add_patch(Circle((9, 8), .475, facecolor='w', clip_on=False, zorder=3))


ax.text(9, 8, '$\\bigtriangledown$', fontsize='large', horizontalalignment='center', verticalalignment='center')

plt.show()



In [59]:
from matplotlib.collections import PatchCollection

In [60]:
fig = plt.figure(figsize=(5, 5), facecolor=BOARD_COLOR)
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')

ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)
ax.plot(hoshi_rows, hoshi_cols, 'ko', markersize=3)

for center in hoshi:
    ax.add_patch(Circle(center, .01, edgecolor='none', facecolor='k'))

ax.set_xlim((0, 18))
ax.set_ylim((18, 0))

ax.xaxis.set_tick_params(labelbottom='off', labeltop='on')

ax.set_xticklabels(ascii_uppercase[:19])
ax.set_yticklabels(range(1, 19+1))

ax.add_patch(Circle((9, 9), .475, facecolor='k', zorder=3))

ax.add_patch(Circle((9., 10), .475, facecolor='w', zorder=3))
ax.add_patch(Circle((8, 9), .475, facecolor='w', zorder=3))
ax.add_patch(Circle((9, 8), .475, facecolor='w', clip_on=False, zorder=3))

ax.text(15, 13, 'a', fontsize='large', backgroundcolor=BOARD_COLOR, horizontalalignment='center', verticalalignment='center')
ax.text(8, 9, 'b', fontsize='large', horizontalalignment='center', verticalalignment='center')
ax.text(9, 9, 'c', fontsize='large', color='w', horizontalalignment='center', verticalalignment='center')

ax.add_patch(Circle((9, 8), .475, facecolor='w', clip_on=False, zorder=3))


ax.text(9, 8, '$\\bigtriangledown$', fontsize='large', horizontalalignment='center', verticalalignment='center')

plt.show()



In [66]:
fig = plt.figure(figsize=(8, 8), facecolor=BOARD_COLOR)
ax = fig.add_subplot(1, 1, 1)

ax.set_axis_bgcolor('none')

ax.set_xticks(range(19))
ax.set_yticks(range(19))

ax.grid(color='k', linestyle='-', linewidth=1)
ax.plot(hoshi_rows, hoshi_cols, 'ko', markersize=3, antialiased=False)

ax.set_xlim((0, 18))
ax.set_ylim((18, 0))

ax.xaxis.set_tick_params(labelbottom='off', labeltop='on')

ax.set_xticklabels(ascii_uppercase[:19])
ax.set_yticklabels(range(1, 19+1))

ax.add_patch(Circle((9, 9), .475, facecolor='k', zorder=3))

ax.add_patch(Circle((9., 10), .475, facecolor='w', zorder=3))
ax.add_patch(Circle((8, 9), .475, facecolor='w', zorder=3))
ax.add_patch(Circle((9, 8), .475, facecolor='w', clip_on=False, zorder=3))

ax.text(15, 13, 'a', fontsize='large', backgroundcolor=BOARD_COLOR, horizontalalignment='center', verticalalignment='center')
ax.text(8, 9, 'b', fontsize='large', horizontalalignment='center', verticalalignment='center')
ax.text(9, 9, 'c', fontsize='large', color='w', horizontalalignment='center', verticalalignment='center')

ax.add_patch(Circle((9, 8), .475, facecolor='w', clip_on=False, zorder=3))


ax.text(9, 8, '$\\bigtriangledown$', fontsize='large', horizontalalignment='center', verticalalignment='center')

plt.show()



In [ ]: