当前位置: 首页 > 知识库问答 >
问题:

为什么我不能返回python中的绘图图

严俊彦
2023-03-14

我需要一些帮助,情况是我能够返回新的CSV文件,但无法将绘图图返回到另一个页面,并且我在不同的场景下分离了return。有人能指出我应该对代码做什么吗?或者给我一些提示,提前谢谢!

应用程序。派克

@app.route('/transform', methods=["POST"])
def transform_view():
    if request.method == 'POST':
        if request.files['data_file']:
            f = request.files['data_file']
            if not f:
                return "No file"
    
            
            stream = io.StringIO(f.stream.read().decode("UTF8"), newline=None)
            csv_input = csv.reader(stream)
            stream.seek(0)
            result = stream.read()
            df = pd.read_csv(StringIO(result), usecols=[1])
            
            #extract month value
            df2 = pd.read_csv(StringIO(result))
            matrix2 = df2[df2.columns[0]].to_numpy()
            list1 = matrix2.tolist()
             
            # load the model from disk
            model = load_model('model.h5')
            dataset = df.values
            dataset = dataset.astype('float32')
            scaler = MinMaxScaler(feature_range=(0, 1))
            dataset = scaler.fit_transform(dataset)
            look_back = 1
            dataset_look = create_dataset(dataset, look_back)
            dataset_look = np.reshape(dataset_look, (dataset_look.shape[0], 1, dataset_look.shape[1]))
            predict = model.predict(dataset_look)
            transform = scaler.inverse_transform(predict)
    
            X_FUTURE = 12
            transform = np.array([])
            last = dataset[-1]
            for i in range(X_FUTURE):
                curr_prediction = model.predict(np.array([last]).reshape(1, look_back, 1))
                last = np.concatenate([last[1:], curr_prediction.reshape(-1)])
                transform = np.concatenate([transform, curr_prediction[0]])
          
            transform = scaler.inverse_transform([transform])[0]
    
            dicts = []
            curr_date = pd.to_datetime(list1[-1])
            for i in range(X_FUTURE):
                curr_date = curr_date +  relativedelta(months=+1)
                dicts.append({'Predictions': transform[i], "Month": curr_date})
    
    
            new_data = pd.DataFrame(dicts).set_index("Month")
            ##df_predict = pd.DataFrame(transform, columns=["predicted value"])
    
                          
        
            response = make_response(new_data.to_csv(index = True, encoding='utf8'))
            response.headers["Content-Disposition"] = "attachment; filename=result.csv"
            return response
        
            labels = [
                        'JAN', 'FEB', 'MAR', 'APR',
                        'MAY', 'JUN', 'JUL', 'AUG',
                        'SEP', 'OCT', 'NOV', 'DEC'
                       ]
    
            values = [
                            967.67, 1190.89, 1079.75, 1349.19,
                            2328.91, 2504.28, 2873.83, 4764.87,
                            4349.29, 6458.30, 9907, 16297
                        ]
    
            colors = [
                            "#F7464A", "#46BFBD", "#FDB45C", "#FEDCBA",
                            "#ABCDEF", "#DDDDDD", "#ABCABC", "#4169E1",
                            "#C71585", "#FF4500", "#FEDCBA", "#46BFBD"]
            return redirect(url_for('line'))
    
    @app.route('/line')
    def line():
        line_labels=labels
        line_values=values
        return render_template('graph.html', title='Bitcoin Monthly Price in USD', max=17000, labels=line_labels, values=line_values)

共有1个答案

吴德辉
2023-03-14

你必须先把它保存到特定的文件夹,然后在前端你可以指定图像,就像你在url中传递它一样

from matplotlib import pyplot as plt
     
plt.savefig('path/plot.png')

或者你可以使用JavaScript渲染图形到前端,你可以使用chart.js等。

 类似资料:
  • 当我运行这个代码时,我看不到椭圆形,我只能看到一个空白的框架。我知道我可以使用方法,但我很想知道为什么我的代码不能工作。

  • 问题内容: 在哪里返回。这不会编译…我 几乎 可以理解为什么。但是,如果我想从一个空白中返回一个空白,为什么不呢?相反,我最终写了这样的东西: 我不是在寻找代码样式建议,我想知道为什么Java明确禁止这种类型的void返回。任何信息表示赞赏,谢谢。 问题答案: 带有表达式的return语句返回该表达式的值。的类型的是空隙表达-它不 具有 一个值。 从逻辑上讲,您想执行,然后返回-所以您必须说。这两

  • 这里,当我返回一个箭头函数insted时,它不起作用: 我知道箭头函数是松散的,这就是为什么我在这里尝试在括号中返回它。没有他们也不行。

  • 一个标准的习语是 所以如果这行得通,为什么我不能说 g表示“

  • 问题内容: 我试图从我的主函数返回一个更大的值,例如1000,但是当我键入它时显示0。 如果我返回一个较小的值(如100),它将显示正确的值。 我的代码: 我们可以返回的值是否有限制? 问题答案: 这里有两个相关的概念:C退出状态和bash返回代码。它们都覆盖0-255的范围,但是bash出于自己的目的使用大于126的数字,因此从程序中返回这些值会造成混乱。 为了安全起见,请将退出状态代码限制为0

  • 问题内容: 我有一个箭头函数,看起来像这样(简化): 但是当我调用它时,我得到: 为什么? 例: ( 注意: 对于上述带有箭头功能的 特定 问题,这是一个干净,规范的重复目标。) 问题答案: 当您使用箭头函数的函数主体版本(带有)时,没有暗示。您必须指定它。当您使用 简洁 主体(no )时,主体表达式的结果将由函数隐式返回。 因此,您可以使用显式的方式编写该代码: 或简洁的主体: 例子: 略 切线