[python] king's square at checkmate visualization

Viewer

copydownloadembedprintName: king's square at checkmate visualization
  1. # this was originally a notebook, so its not meant to be run altogether
  2.  
  3. import pandas as pd
  4. import numpy as np
  5. import seaborn as sns
  6. sns.set_theme()
  7.  
  8.  
  9. # 1.0 to heatmap all checkmates
  10.  
  11. df = pd.read_csv(# the filepath to csv from the previous script)
  12. all_mates = pd.DataFrame(df.groupby('square').size())
  13. all_mates.reset_index(inplace=True)
  14. all_mates['row'] = all_mates['square']//8
  15. all_mates['column'] = all_mates['square'] - (all_mates['row']*8)
  16. all_mates['row'] = all_mates['row'] + 1
  17. all_mates.rename(columns={0:'n_checkmates'}, inplace=True)
  18. all_mates['checkmate_rate'] = (all_mates['n_checkmates']/all_mates['n_checkmates'].sum())*100
  19. all_mates['column'] = all_mates['column'].map({0:'A', 1:'B', 2:'C', 3:'D', 4:'E', 5:'F', 6:'G', 7:'H'})
  20.  
  21. # 1.1 counts
  22.  
  23. pivot_mates = all_mates.pivot(index='row', columns='column', values='n_checkmates')
  24. ax = sns.heatmap(pivot_mates, linewidths=1, annot=True, fmt="d", cmap='viridis', cbar=False)
  25. ax.invert_yaxis()
  26. ax.set_title('King\'s square when checkmated')
  27. ax.set(xlabel=None)
  28. ax.set(ylabel=None)
  29. sns.set(rc={'figure.figsize':(6,6)})
  30. fig = ax.get_figure()
  31. fig.savefig('checkmate_counts.png', dpi=800)
  32.  
  33. # 1.2 rates
  34. pivot_mates_rates = all_mates.pivot(index='row', columns='column', values='checkmate_rate')
  35. ax = sns.heatmap(pivot_mates_rates, linewidths=.5, annot=True, cmap='viridis', cbar=False)
  36. ax.invert_yaxis()
  37. ax.set(xlabel=None)
  38. ax.set(ylabel=None)
  39. sns.set(rc={'figure.figsize':(6,6)})
  40. ax.set_title('King\'s square when checkmated')
  41. fig = ax.get_figure()
  42. fig.savefig('checkmate_rates.png', dpi=800)
  43.  
  44.  
  45. # 2.0 specific color
  46.  
  47. white = df.loc[df['color'] == 'White']
  48. white = pd.DataFrame(white.groupby('square').size())
  49. white.reset_index(inplace=True)
  50. white['row'] = white['square']//8
  51. white['column'] = white['square'] - (white['row']*8)
  52. white['row'] = white['row'] + 1
  53. white.rename(columns={0:'n_checkmates'}, inplace=True)
  54. white['checkmate_rate'] = (white['n_checkmates']/white['n_checkmates'].sum())*100
  55. white['column'] = white['column'].map({0:'A', 1:'B', 2:'C', 3:'D', 4:'E', 5:'F', 6:'G', 7:'H'})
  56.  
  57.  
  58. # 2.1 counts
  59. pivot_mates = white.pivot(index='row', columns='column', values='n_checkmates')
  60. ax = sns.heatmap(pivot_mates, linewidths=1, annot=True, fmt="d", cmap='viridis', cbar=False)
  61. ax.invert_yaxis()
  62. ax.set_title('White king\'s square when checkmated')
  63. ax.set(xlabel=None)
  64. ax.set(ylabel=None)
  65. sns.set(rc={'figure.figsize':(6,6)})
  66. fig = ax.get_figure()
  67. fig.savefig('white_checkmate_counts.png', dpi=800)
  68.  
  69. # 2.2 rates
  70. pivot_mates_rates = white.pivot(index='row', columns='column', values='checkmate_rate')
  71. ax = sns.heatmap(pivot_mates_rates, linewidths=.5, annot=True, cmap='viridis', cbar=False)
  72. ax.invert_yaxis()
  73. ax.set(xlabel=None)
  74. ax.set(ylabel=None)
  75. sns.set(rc={'figure.figsize':(6,6)})
  76. ax.set_title('White King\'s square when checkmated')
  77.  
  78. fig = ax.get_figure()
  79. fig.savefig('white_checkmate_rates.png', dpi=800)

Editor

You can edit this paste and save as new:


File Description
  • king's square at checkmate visualization
  • Paste Code
  • 03 Jan-2021
  • 2.88 Kb
You can Share it: