如何制作Matplotlib动画小提琴图?

时间:2017-04-21 21:55:20

标签: python matplotlib

我正在试图制作一个小提琴剧情节,所以我开始用我认为应该非常基本的东西开始,但它不起作用。我认为问题是violinplot不接受set_data,但我不知道如何将更改的数据传递给violinplot。对于这个例子,我想要一个平均值慢慢转移到更高值的图。如果我正在咆哮错误的树,请告诉我一个有效的小提琴图谱代码。

g++

1 个答案:

答案 0 :(得分:2)

实际上,小提琴图没有set_data方法。原因可能是,在创建这样的情节时,背景中会进行大量计算,并且它包含很多不同的元素,这些元素很难更新。

最简单的选择是简单地重绘小提琴情节,而不是使用blitting。

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


fig, ax = plt.subplots()
data = np.random.normal(loc=25, scale=20, size=100)

def animate(i, data):
    ax.clear()
    ax.set_xlim(0,2)
    ax.set_ylim(0,200)
    data[:20] = np.random.normal(loc=25+i, scale=20, size=20)
    np.random.shuffle(data)
    ax.violinplot(data)

animate(0)

v_ani = animation.FuncAnimation(fig, animate, np.arange(1, 200), 
                              fargs=(data,), interval=50, blit=False)

plt.show()

enter image description here