Pierde Los Modales 2023-02-13 22:57 采纳率: 76.9%
浏览 557
已结题

matplotlib的有类似于matlab的hold on,hold off功能吗

我在使用matplotlib的funcanimation类时,为了画等高线图随时间变化用了colorbar,虽然图是第二幅覆盖第一副的,满足要求,但是colorbar确并没有被覆盖,而是生成并堆起来了。我想请问一下matplotlib的画图机制是默认覆盖还是在原图上加,如果要修改这种状态该怎么办。还有就是这种堆叠起来的colorbar应该怎么写才能正常?谢谢各位>o<

img

  • 写回答

2条回答 默认 最新

  • zmy1127 2023-02-14 09:02
    关注

    Matplotlib 有类似于 Matlab 的 hold on/off 功能,可以在当前图上绘制多个图像,而不是重新绘制整个图。你可以通过调用pyplot模块中的hold()函数来实现这一功能。

    
    import matplotlib.pyplot as plt
    
    plt.hold(True)
    plt.plot(x, y1, 'r')
    plt.plot(x, y2, 'b')
    plt.hold(False)
    plt.show()
    
    

    默认情况下,Matplotlib 每次绘制图形都将重新绘制图形,以便每次绘制的图形都是最新的。如果你想在原图上加图,就需要调用hold()函数,使其处于“hold on”状态。

    对于图上生成的colorbar,如果每次都生成一个新的colorbar,那么就会有多个colorbar叠在一起。为于解决这个问题,你可以在生成colorbar前先判断是否存在colorbar,如果存在,就不再生成新的colorbar,而是使用原来的colorbar。你可以使用pyplot模块中的clf()函数(clear figure)来清空图形,以便重新绘制新的图形,或者在生成新的图形前调用hold()函数,以便在原图上绘制新的图形。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月22日
  • 已采纳回答 2月14日
  • 创建了问题 2月13日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分