如何使用matplotlib创建特定类型的网格

2024-04-28 17:22:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个程序(用python3.3)来解决n皇后问题,并以列表的形式给出了一个解决方案(例如[1,5,7,2,0,3,6,4]),它指定了每行中皇后的位置。例如,这个特定的列表有8个元素(所以它是n=8的解决方案,或者是一个标准的棋盘),我的程序将打印如下内容:

+---+---+---+---+---+---+---+---+
|   | ۩ |   |   |   |   |   |   |
+---+---+---+---+---+---+---+---+
|   |   |   |   |   | ۩ |   |   |
+---+---+---+---+---+---+---+---+
|   |   |   |   |   |   |   | ۩ |
+---+---+---+---+---+---+---+---+
|   |   | ۩ |   |   |   |   |   |
+---+---+---+---+---+---+---+---+
| ۩ |   |   |   |   |   |   |   |
+---+---+---+---+---+---+---+---+
|   |   |   | ۩ |   |   |   |   |
+---+---+---+---+---+---+---+---+
|   |   |   |   |   |   | ۩ |   |
+---+---+---+---+---+---+---+---+
|   |   |   |   | ۩ |   |   |   |
+---+---+---+---+---+---+---+---+

我的问题是:如何使用matplotlib来做类似的事情,但是没有ascii艺术?我之所以这么做是因为我使用的打印格式不允许大于96x96的电路板。在


Tags: 程序元素内容列表标准棋盘matplotlib格式
1条回答
网友
1楼 · 发布于 2024-04-28 17:22:44

如果您使用的字体带有queen符号,则可以执行以下操作:

import matplotlib.pyplot as plt
import numpy as np

board = np.zeros((8,8,3))
board += 0.5 # "Black" color. Can also be a sequence of r,g,b with values 0-1.
board[::2, ::2] = 1 # "White" color
board[1::2, 1::2] = 1 # "White" color

positions = [1, 5, 7, 2, 0, 3, 6, 4]

fig, ax = plt.subplots()
ax.imshow(board, interpolation='nearest')

for y, x in enumerate(positions):
    # Use "family='font name'" to change the font
    ax.text(x, y, u'\u2655', size=30, ha='center', va='center')

ax.set(xticks=[], yticks=[])
ax.axis('image')

plt.show()

但是,我在我的系统上找不到具有该字符的字体,所以我得到:

enter image description here

也可以使用图像作为符号:

^{pr2}$

enter image description here

相关问题 更多 >