V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
yellowtail
V2EX  ›  Python

请问 matplotlib 中 ax.clear 有什么作用?

  •  
  •   yellowtail · 2021-01-18 20:59:52 +08:00 · 1082 次点击
    这是一个创建于 1165 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在网上找的代码,修改的时候发现如果在 drawImg 函数中注释掉 ax.clear()那么出来的绘制出来颜色会一直变化。
    去除 ax.clear()以后除了颜色变化还有其他的副作用吗?




    import numpy as np
    from tkinter import *
    from tkinter import messagebox
    from mpl_toolkits.mplot3d import Axes3D
    import matplotlib.pyplot as plt
    # 创建画布需要的库
    from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

    root = Tk()
    root.title("tkinter + Matplotlib")
    root.geometry('700x750')


    plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
    fig = plt.figure(figsize=(6.5, 7), edgecolor='blue')
    ax = Axes3D(fig)
    # 定义刻度
    ax.set_xlim(0, 100)
    ax.set_ylim(0, 100)
    ax.set_zlim(0, 100)
    canvas = FigureCanvasTkAgg(fig, master=root)
    canvas.draw()
    # 显示画布
    canvas.get_tk_widget().pack()

    i = 0
    # 定义存储坐标的空数组
    x = []
    y = []
    z = []


    # 抛物线动态绘制函数
    def drawImg():
    global i
    i += 1
    global ax
    #ax.clear()
    ax.set_xlim(0, 100)
    ax.set_ylim(0, 100)
    ax.set_zlim(0, 100)
    global x
    global y
    global z
    t = i * 0.1
    dtax = 20 * t * np.sin(0.25 * np.pi)
    x.append(dtax)
    dtay = 20 * t * np.cos(0.25 * np.pi)
    y.append(dtay)
    dtaz = 100 - t ** 2 * 0.5 * 10
    z.append(dtaz)
    ax.plot(x, y, z)
    canvas.draw()
    global afterHandler
    afterHandler = root.after(100, drawImg)


    drawImg()


    def on_closing():
    root.after_cancel(afterHandler)
    answer = messagebox.askokcancel("退出", "确定退出吗?")
    if answer:
    plt.close('all')
    root.destroy()
    else:
    root.after(1000, drawImg)


    root.protocol("WM_DELETE_WINDOW", on_closing)
    root.mainloop()
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   989 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 20:09 · PVG 04:09 · LAX 13:09 · JFK 16:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.