1

我正在尝试与 matplotlib 人物互动,但有些事情没有按计划进行......

下面是脚本的示例,这里是它应该做什么的描述:在我的 test_figure 类的初始化部分,我创建了一个图形(图 1),添加一个子图,绘制 100 个随机点,定义文本框的属性和将事件“pick_event”连接到函数 onpick()。此函数在使用时应获取数据的 x 和 y 坐标,使用它来使用它们绘制一条线(在图 2 中),同时使用文本在图 1 上显示 x 和 y 坐标。

几乎所有这些都有效,除了最后一部分:x 和 y 坐标没有显示在图 1 上,我不知道为什么......你有什么想法吗?

谢谢!

import numpy as np
import matplotlib.pyplot as plt

class test_figure:

    def __init__(self):
        self.fig = plt.figure(1)
        self.ax = self.fig.add_subplot(111)
        self.ax.set_title('Click on data')
        # 3 pixels around point
        line, = self.ax.plot(np.random.rand(100), 'o', picker=3) 
        self.fig.canvas.mpl_connect('pick_event', self.onpick)

    def onpick(self, event):
        thisline = event.artist
        xdata = thisline.get_xdata()
        ydata = thisline.get_ydata()
        ind = event.ind
        self.fig2 = plt.figure(2)
        self.ax2 = self.fig2.add_subplot(111)
        line, = self.ax2.plot(xdata[ind]*range(60)+ydata[ind])
        self.fig.text(0.5,0.5,'pouet :'+str(xdata[ind]))

a = test_figure()
4

1 回答 1

2

添加

self.fig.canvas.draw()

到你回调结束。 text(与几乎所有axes类方法一样)将艺术家添加到图形中,但不强制重新渲染。

于 2013-07-13T15:38:02.527 回答