上面的代码绘制了一个基本的网格。我想做以下几件事。
- 了解用户单击绘图的位置以更改矩形的表面颜色。 问题是要知道用户点击了,然后得到点击的坐标。这可能吗?
- 我还想与关键事件进行互动。例如,如果激活空格键,我想返回到初始抽奖。 问题是要知道某个键被按下,并且要知道这个键的ascii码。可能吗?
我的起始代码
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
n = 2**3
plt.axes(xlim = (0, n), ylim = (0, n))
plt.axis('off')
for line in range(n):
for col in range(n):
rect = mpatches.Rectangle(
(line, col), 1, 1,
facecolor = "white",
edgecolor = "black"
)
plt.gca().add_patch(rect)
plt.show()
最佳答案
这是一个未分解矩形绘制的解决方案。事实上,matplotlib 提供了一个非常易于使用的事件界面。
#!/usr/bin/env python3
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
n = 2**3
def drawInitial():
plt.axes(xlim = (0, n), ylim = (0, n))
plt.axis('off')
for line in range(n):
for col in range(n):
rect = mpatches.Rectangle(
(col, line), 1, 1,
facecolor = "white",
edgecolor = "black"
)
plt.gca().add_patch(rect)
def onclick(event):
col = int(event.xdata)
line = int(event.ydata)
rect = mpatches.Rectangle(
(col, line), 1, 1,
facecolor = "black",
edgecolor = "black"
)
plt.gca().add_patch(rect)
plt.draw()
def onkey(event):
if event.key == " ":
drawInitial()
plt.draw()
fig = plt.figure()
fig.canvas.mpl_connect('button_press_event', onclick)
fig.canvas.mpl_connect('key_press_event', onkey)
drawInitial()
plt.show()
关于python - 与 matplotlib 交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19934635/