我目前正在尝试为保存在pandas数据框中的月度数据的散点图设置动画。到目前为止,我做了循环,生成一个接一个的单个图。现在我想加入他们一个单一的GIF(或mp4我不在乎)。有没有一种简单的方法来使用mathplotlibs动画功能?我无法理解,如何通过FuncAnimation循环切片数据。到目前为止,我做到了这一点:
time = df.monat.unique()
for i in time:
dft = df[(df.monat == i) & (df.xcol < 4000)]
plt.scatter(x=dft['xcol'],
y=dft['ycol'],
s=dft['scol'] / 25,
c=dft['clr'],
linewidth=0,
alpha=0.8)
plt.title('Title ' + str(i), fontsize=10)
plt.xlabel('x label', fontsize=9)
plt.ylabel('y label', fontsize=9)
legend1_line2d = list()
for val in clrdict.values():
legend1_line2d.append(mlines.Line2D([0], [0],
linestyle='none',
marker='o',
alpha=0.6,
markersize=6,
markeredgecolor=None,
markeredgewidth=0,
markerfacecolor=val))
legend1 = plt.legend(legend1_line2d,
names,
frameon=False,
numpoints=1,
fontsize=8,
loc='upper right')
plt.show()
答案 0 :(得分:2)
我自己想出来了:
生成一个空图(图)。就像之前所有唯一的时间值都存储在一系列(时间)中一样。一个简单的计数器(i)有助于在更新函数内为每个月生成正确的数据切片(dft)(df.monat ==系列中的值&#39; time&#39;)。 update-function的调用次数是anim.FuncAnimation中frame-parameter的值(frames = len(time))。
希望,这对其他人有帮助(matplotlib FuncAnimation的大多数解释我发现使用随机数 - 而不是特定的pandas列):
var app = angular.module("app", []);
app.controller("ctrl",
function ($scope) {
var options = [
{ name: "a" },
{ name: "b" },
{ name: "c" }
];
$scope.names = [
{ id: 1, field: "insert name", name: "name", placeholder: "your name is", value:null, type:"text" },
{ id: 2, field: "insert phone", name: "phone", placeholder: "your phone is", value: null, type: "tel" },
{ id: 3, field: "insert age", name: "age", placeholder: "your age is", value: null, type: "number", min: 0, max: 20 },
{ id: 4, field: "select country", name: "country", placeholder: "your country is", value: null, type: "select", options: options }
];
$scope.sendMe = function() {
console.log($scope.names);
}
});