matplotlib()缺少1个必要的位置参数:'i'

时间:2016-12-05 23:56:48

标签: python matplotlib tkinter

def matplotlib(i):

    graph_data = open('sampleData.txt', 'r').read()
    lines = graph_data.split('\n')
    xs = []
    ys = []
    for line in lines:
        if len(line) >1:
            x, y = line.split(',')
            xs.append(x)
            ys.append(y)

    fig.clear()

    'Limits'
    ax = plt.gca()
    ax.set_xlim([80, -80])
    ax.set_ylim([42, -42])
    plt.axis('equal')

    'Labels'
    plt.xticks([-16, -32, -48, -64, -80, 0, 16, 32, 48, 64, 80])
    plt.yticks([-42, -28, -14, 0, 14, 28, 42])

    plt.show()

    plt.scatter(xs, ys)

'Toolbar Buttons'

insertButt = Button(toolbar, text="Matplotlib TST", fg='Dark Red', bg="Dim Grey", activebackground='Dim Grey',
                    activeforeground='Dark Red', command=matplotlib).pack(side=LEFT, padx=2, pady=2)

ani = animation.FuncAnimation(fig, matplotlib, interval=1000)

当我尝试使用按钮运行该功能时,会出现问题。它没有使用按钮就可以正常工作。我收到了错误,

matplotlib()缺少1个必需的位置参数:'i'

我试图通过简单地删除,我来解决这个问题,然后我得到了错误,

matplotlib()获取0个位置参数,但是给出了1个

我也尝试将(i)命令= matplotlib(i)放在我的按钮后,我的图表变成空白,然后我收到了这个错误,

matplotlib()获取0个位置参数,但是给出了1个

我只是想找到如何制作实时图表,我甚至意味着什么,而且我不确定为什么只有当我在Tkinter中使用按钮运行它时它才起作用。

2 个答案:

答案 0 :(得分:1)

这个

command=matplotlib

执行不带参数的函数matplotlib()

但是这个

FuncAnimation( matplotlib ) 

使用一个参数执行相同的函数。

当您有def matplotlib(i):def matplotlib():

时,您会收到两个不同的错误

您未在i内使用matplotlib(),因此您可以指定默认值None

def matplotlib(i=None):

它可以使用和不使用参数。

FuncAnimation将“当前帧编号”发送为i,您可以使用从列表中获取不同的值(显示它)或生成不同的图(即sin(i))。< / p>

答案 1 :(得分:0)

基于你现在所拥有的matplotlib(i) - 我真的没有在你的函数中使用所以我会删除它所以将你的定义从matplotlib(i)更改为matplotlib()。

根据评论进行编辑。