我试着构建一个黑色的方格,每次你点击一个方格,它就会变成白色。现在,由于某种原因,我的代码做了一些非常奇怪的事情:
1.我输入的坐标与数组坐标不对应。我试图通过将i = y - (N-1)
和j = x
与(x,y)
设置为鼠标坐标来改变这一点。但只有第一行会被正确转换(绘图的顶行)。其余行将被垂直反转。
1.当所有方块为白色时,图自动重置为黑色方块。
下面是我的代码:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
import math
N = 3
# Make an empty data set
data = np.zeros((N, N))
# Make a figure + axes
fig, ax = plt.subplots(1, 1, tight_layout=True)
# Draw the boxes
box = ax.imshow(data, cmap='gray', extent=[0, N, 0, N])
# Draw the grid
for x in range(N + 1):
ax.axhline(x, lw=2, color='w', zorder=5)
ax.axvline(x, lw=2, color='w', zorder=5)
# Create interactivity
def on_click(event):
gx = event.xdata
gy = event.ydata
print('x=',gx)
print('y=',gy)
i = int(gy) - N + 1
j = int(gx)
data[i,j] = 1
ax.imshow(data, cmap='gray', extent=[0, N, 0, N])
fig.canvas.draw_idle()
fig = plt.gcf()
fig.canvas.mpl_connect('button_press_event', on_click)
# Turn off the axis labels
ax.axis('off')
plt.show()
谢谢你的帮助
1条答案
按热度按时间i2byvkas1#
我发现了问题:
1.它是
N - 1 - int(gy)