Matplotlib动画一个箱形图

时间:2018-02-01 17:04:35

标签: python animation matplotlib boxplot

当数据在一个时间序列上移动时,我试图为一个箱形图设置动画。

我正在使用matplotlib动画示例,它们展示了它如何与绘图函数一起使用,但这似乎不会延续到boxplot函数:

代码在下面工作,但是将两行更改为方框图会给我带来错误

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig, ax = plt.subplots()
line, = ax.plot(np.arange(10))  # <-- ax.boxplot(np.arange(10))
ax.set_ylim(0, 20)


def update(data):
    line.set_ydata(data)  # < -- line = ax.boxplot(data)? 
    return line,


def data_gen():
    i = 0
    while True:
        yield np.arange(10) + i
        i += .1

ani = animation.FuncAnimation(fig, update, data_gen, interval=100)
plt.show()

Boxplot似乎也没有&#34; set_data&#34;功能,或&#34;动画=真&#34;参数。

基本上我希望动画与上面相同,但描绘的是一个方块图而不是一个线图。

2 个答案:

答案 0 :(得分:2)

我自己想出来了:想法可以是清除轴,并在每个框架中绘制一个新的箱图,如下所示。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig, ax = plt.subplots()
# line, = ax.boxplot(np.arange(10))  <-- not needed it seems
ax.set_ylim(0, 20)


def update(data):
    ax.cla()  # <-- clear the subplot otherwise boxplot shows previous frame
    ax.set_ylim(0, 20)
    ax.boxplot(x=data)  


def data_gen():
    i = 0
    while True:
        yield np.arange(10) + i
        i += .1

ani = animation.FuncAnimation(fig, update, data_gen, interval=100)
plt.show()

答案 1 :(得分:0)

# Unset socks proxy
unset all_proxy    
unset ALL_PROXY

# Install missing dependencies:
pip install pysocks

# Reset proxy
source ~/.bashrc