liu8359 发表于 2023-4-24 17:20

python画折线图求助

本帖最后由 liu8359 于 2023-4-24 17:22 编辑

用的matplotlib中animation.FuncAnimation方法但是x轴画满后,
会出一条直线,如第二张图,这个应该怎么解决
https://s1.ax1x.com/2023/04/24/p9n9DWd.pnghttps://s1.ax1x.com/2023/04/24/p9n9Tln.png

傲雪不傲霜 发表于 2023-4-24 17:48

源码发一下?

uZHu 发表于 2023-4-24 17:57

网页的话直接用echarts只需要简单的设置就可以了

euga8848 发表于 2023-4-24 18:04

是不是这条线本来就有的啊

zb848 发表于 2023-4-24 19:05

默不言 发表于 2023-4-24 19:08

函数里面应该有一个属性可以隐藏这根线,你看看函数属性。

ZeBianSir 发表于 2023-4-24 22:43

5楼的办法可以的,,建议还是用matplotlib.pyplot

mendoor 发表于 2023-4-24 23:08

不知道你的源代码长啥样的,没法有针对性地回答了。
可以考虑设置ax.grid(False)

或者参考以下代码
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig, ax = plt.subplots()            #假如是fig = plt.plot()则不行,创建fig的时候携带了一个ax作为更迭基础

x = np.arange(0, 2*np.pi, 0.01)             #此两步假如不直接程序执行而是每行顺着执行则会留下一固定的图线轨迹
line, = ax.plot(x, np.sin(x))               #说明直接执行程序时画图从animation语句开始,此两句其实作为整个序列的一部分?


def init():# only required for blitting to give a clean slate.
    line.set_ydata( * len(x))       #重置了可变图线line的全部y值为nan
    return line,

def animate(i):
    line.set_ydata(np.sin(x + i / 100))# update the data. 经过一个i,animate处理line图像的的y为新的值
    return line,


ani = animation.FuncAnimation(
    fig, animate, init_func=init, interval=2, blit=True, save_count=50)#如果这个地方blit改成False,还是能运行但是很慢
#fig,ax语句创建了一个带有更新性质的画布,init引入【对动画中的变化目标】进行初始化,animate更新【变化目标】
#interval是动画呈现的时间间隔,blit是是否进行清楚的卡门指标

# To save the animation, use e.g.
#
# ani.save("movie.mp4")
#
# or
#
# from matplotlib.animation import FFMpegWriter
# writer = FFMpegWriter(fps=15, metadata=dict(artist='Me'), bitrate=1800)
# ani.save("movie.mp4", writer=writer)

plt.show()

liu8359 发表于 2023-4-25 08:39

ZeBianSir 发表于 2023-4-24 22:43
5楼的办法可以的,,建议还是用matplotlib.pyplot

matplotlib.pyplot画线速度太慢了,每秒512个点,16条线

liu8359 发表于 2023-4-25 09:50

mendoor 发表于 2023-4-24 23:08
不知道你的源代码长啥样的,没法有针对性地回答了。
可以考虑设置ax.grid(False)



我的逻辑是,从原点开始画线,一直到x轴末尾结束。
然后再从原点开始画,从原点开始画的时候,清除掉画线点前一个点
再次到达原点是,就出现了封闭
页: [1] 2
查看完整版本: python画折线图求助