很久很久以前, 做過一個項目, 因為前端基礎差, echarts搗鼓不來, 然后就折騰出來一套比較奇葩的技術方案, 就是前端需要什么圖表, 后端先繪制好, 然后前端需要什么圖表, 再從后端拉取后端之前響應的圖片路徑, 再去做渲染。
其實基于后端使用 Matplotlib 繪制圖表,前端調用顯示的方案是完全可行的。這種模式在服務器端生成圖表,然后將生成的圖表文件傳遞給前端進行顯示。這種方法在服務器端處理數據和渲染圖表可以帶來一些優勢,比如在服務器端可以進行復雜的計算和數據處理,同時可以避免在客戶端安裝額外的庫或軟件。
以下是這種方案的一個基本流程:
- 后端生成圖表:
- 在服務器端,使用 Matplotlib 繪制圖表。
- 設置
plt.savefig()
來將圖表保存為文件,例如 PNG 或 SVG 格式。
- 前端加載圖表:
- 前端使用 HTML、CSS 和 JavaScript 來加載和顯示圖表。
- 如果圖表是 PNG 或 JPEG 格式,可以直接在 HTML 中使用
<img>
標簽顯示。 - 如果圖表是 SVG 格式,可以使用 JavaScript 的 D3.js 庫或其他 SVG 處理庫來動態顯示圖表。
- 前后端交互:
- 前端可以通過 AJAX 或其他 HTTP 請求方法從服務器獲取數據和圖表文件。
- 后端可以響應前端的請求,發送數據和圖表文件。
這里是一個簡單的例子,展示如何在 Flask 服務器中使用 Matplotlib 生成圖表,并將其作為文件發送給前端:
# app.py
from flask import Flask, send_file
import matplotlib.pyplot as plt
import numpy as np
app = Flask(__name__)
@app.route('/plot')
def plot_chart():# 生成數據