决定在循环中创建的绘图时刻

时间:2018-04-08 18:23:56

标签: python pandas matplotlib

以下代码在for循环中创建了一些图:

Idiom.find({keywords: req.query.keyword})
    .exec(function(err, result) {

    if(err) return res.send(err);

    //loops through objects in result
    for(var i = 0; i < result.length; i++) {
        Rating.aggregate(
            [
                {
                    "$match": {
                        "idiomid": { "$eq": result[i]._id }
                    }
                },
                {
                    $group: {
                        _id: {idiomid: "$idiomid", type: "$type"},
                        rating: { $sum: "$rating"},
                        total: { $sum: 1}
                    }
                }
            ]
        ).exec(function(err, items) {
            //assign properties from items to result object
            result[i] = items;
            console.log('assigning items');
        });
        console.log('done one loop');
    }
});

enter image description here

在编写更大的程序时,是否有办法处理情节,但稍后再显示?

1 个答案:

答案 0 :(得分:1)

您始终可以创建一个函数,并存储它的lambda。

假设你定义了这个函数:

import pandas as pd
import matplotlib.pyplot as plt

def plot_it(l, b):
    for n in range(7):
        dflist = []
        df = pd.DataFrame(l)
        dflist.append(df)
        df2 = pd.DataFrame(b)
        dflist.append(df2)
        df = pd.concat(dflist, axis = 1)
        ax = plt.subplot(4, 2, n + 1)
        df.plot(ax=ax)

现在你有了数据:

l = [1,2,3,4,5,6]    b = [6,5,4,3,2,1]

如果你致电plot_it(l, b),它会绘制一些东西。你想准备情节,但还没有绘制它。只需指定一个lambda:

my_plot = lambda : plot_it(l, b)

如果您想要实际绘图,请使用:

my_plot()