小编Jam*_*üeb的帖子

pyplot 图冻结(无响应)

我正在努力使用 matlpotlib 库中的 pyplot。当我尝试创建绘图时,数字已经冻结:

plt.figure()
plt.ion()
ax1 = plt.subplot(211) #Here it freezes
plt.title('test', fontsize=8)
plt.xlim(-1700, 1700)
plt.ylabel('x-axis')
plt.xlabel('y-axis')
plt.grid()
plt.show()
...do something else
Run Code Online (Sandbox Code Playgroud)

我只使用过 Pyqt 绘图,但这次我想在没有多线程的情况下解决我的问题,因为我不在乎绘图是否会暂时停止我的代码。问题是,脚本不会停止而是继续运行,并且不会等到图形完全创建。(time.sleep() 没有帮助)。有没有没有线程的解决方案?

干杯,詹姆斯

Ps.:如果我在代码后面加一个断点并在调试模式下运行,就没有问题(显然)。

python plot matplotlib freeze

7
推荐指数
2
解决办法
2万
查看次数

使用 Qt4Agg 后端在 Matplotlib 中重置工具栏历史记录

我有一个带有 matplotlib 和多进程的单独绘图线程。现在,如果我以交互方式放大窗口,则 autoscale_view() 不再起作用(使用 autoscale() 修复)。但是工具箱中的“主页”按钮仍然不起作用:它似乎调用了 autoscale_view() 并且不显示更新的视图而是旧视图(在放大时)。示例代码:

import matplotlib
matplotlib.use("qt4agg")
from matplotlib import pyplot as plt
import multiprocessing

def reset_view():
    plt.get

    xdata = []
    ydata = []
    temp = 0

    test_ax = plt.gca()
    test_line, = plt.plot(xdata, ydata)
    plt.show(block=False)

    for i in range(10):
        temp = temp+1
        xdata.append(temp)
        ydata.append(temp)
        test_line.set_data(xdata, ydata)

        test_ax.relim()
        test_ax.autoscale(tight= False)
        plt.show(block=False)
        plt.pause(2)

plot_thread = multiprocessing.Process(target = reset_view, args = ())

reset_view()

if __name__ == '__main__':
    plot_thread.start()
Run Code Online (Sandbox Code Playgroud)

尝试在绘图期间放大,然后按主页按钮。有没有办法让主页按钮使用 autoscale() 而不是 autoscale_view() 或重置并更新工具栏历史记录,以便它不会跳回旧视图?

Ps:“主页”-按钮=重置原始视图

python qt4 matplotlib toolbar

1
推荐指数
1
解决办法
950
查看次数

标签 统计

matplotlib ×2

python ×2

freeze ×1

plot ×1

qt4 ×1

toolbar ×1