python - 与 matplotlib 交互

标签 python matplotlib

上面的代码绘制了一个基本的网格。我想做以下几件事。

  1. 了解用户单击绘图的位置以更改矩形的表面颜色。 问题是要知道用户点击了,然后得到点击的坐标。这可能吗?
  2. 我还想与关键事件进行互动。例如,如果激活空格键,我想返回到初始抽奖。 问题是要知道某个键被按下,并且要知道这个键的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/

相关文章:

python - 绘制颜色条时强制方形子图

Python 使用 BS4 在整个 XML 中添加子子元素

Python Matplotlib Colorbar/Colormap 设置

python - 在 python 中复制 R/ggplot2 颜色

python - 进行反向传播和梯度下降时,numpy 数组和矩阵出现问题

python - cv2.imshow() 和 matplotlib.pyplot.show() 中的灰度图像不同

matplotlib - 如何从巨大的(Mbs 级).txt 文件中制作更平滑的二维 map ?

python - 检查数组是否为双端队列? python

python - 使用 tkinter 更改单击时按钮的浮雕

python - 将颜色条添加到极地 contourf 多图