如何在 Flask 中使用 Flot 图表?
How to use Flot charts with Flask?
我在 Flask 中有一个 SQLAlchemy 模型,其中包含一系列时间戳和值。我想根据这些数据使用 Flot 图表绘制图表,但找不到有关如何执行此操作的任何信息。
class Reading(database.Model):
__tablename__= 'Readings'
index = database.Column('id', database.Integer, primary_key = True)
timestamp = database.Column('Timestamp', database.DateTime)
value = database.Column('Value', database.Float)
我知道如何在 Flask 应用程序中获取数据以及如何在 html 中使用 Flot 图表,但不知道如何将这两者联系起来。
您需要将时间戳转换为毫秒,否则使用 flot 绘制图形非常容易。您只需要创建一个数据点列表 [[timestamp1, value1], [timestamp2, value2], ...]
并将其与 render_template 一起传递。希望下面的例子能帮到你。
def request_graph_data():
data = [[0, 3], [4, 5], [8, 1], [9, 3]]
return flask.render_template("graph.html",
list_of_data=data)
<script type="text/javascript">
$(function() {
var d1 = {{ list_of_data }};
var d2 = [[0, 3], [4, 8], [8, 5], [9, 13]];
// A null signifies separate line segments
var d3 = [[0, 12], [7, 12], null, [7, 2.5], [12, 2.5]];
$.plot("#placeholder", [ d1, d2, d3 ]);
});
</script>
<div class="demo-container">
<div id="placeholder" class="demo-placeholder"></div>
</div>
我在 Flask 中有一个 SQLAlchemy 模型,其中包含一系列时间戳和值。我想根据这些数据使用 Flot 图表绘制图表,但找不到有关如何执行此操作的任何信息。
class Reading(database.Model):
__tablename__= 'Readings'
index = database.Column('id', database.Integer, primary_key = True)
timestamp = database.Column('Timestamp', database.DateTime)
value = database.Column('Value', database.Float)
我知道如何在 Flask 应用程序中获取数据以及如何在 html 中使用 Flot 图表,但不知道如何将这两者联系起来。
您需要将时间戳转换为毫秒,否则使用 flot 绘制图形非常容易。您只需要创建一个数据点列表 [[timestamp1, value1], [timestamp2, value2], ...]
并将其与 render_template 一起传递。希望下面的例子能帮到你。
def request_graph_data():
data = [[0, 3], [4, 5], [8, 1], [9, 3]]
return flask.render_template("graph.html",
list_of_data=data)
<script type="text/javascript">
$(function() {
var d1 = {{ list_of_data }};
var d2 = [[0, 3], [4, 8], [8, 5], [9, 13]];
// A null signifies separate line segments
var d3 = [[0, 12], [7, 12], null, [7, 2.5], [12, 2.5]];
$.plot("#placeholder", [ d1, d2, d3 ]);
});
</script>
<div class="demo-container">
<div id="placeholder" class="demo-placeholder"></div>
</div>