我正在读取数据时间对象,并希望将它们作为x轴发送到chart.js图表。这些是np.datatime64对象。发送它的最佳方式是什么? 在我的页面中我得到了:
@app.route('/chart')
def chart():
x = [str(d) for d in dataframe["Date"].values] # these are datetimes - here I just do str()
y = [v for v in dataframe["Value"].values] # these are floats
return render_template('chart.html', labels=x, values=y)
在 chart.html :
中<body>
<script type="text/javascript">
{% include "mychart.js" %}
</script>
</head>
<body>
<div class="container">
<canvas id="myChart" width="1500" height="500"></canvas>
</div>
</body>
在 mychart.js :
window.onload = function() {
var chartData = {
labels : [{% for d in labels %} new Date("{{d}}"), {% endfor %}], // or {{d|tojson }}
datasets : [{
fill: true,
lineTension: 0.1,
backgroundColor: "rgba(75,192,192,0.4)",
borderColor: "rgba(75,192,192,1)",
data : [{% for item in values %} {{item}},{% endfor %}],
spanGaps: false
}]
}
var ctx = document.getElementById("myChart").getContext("2d");
var myChart = new Chart(ctx, {
type: 'line',
data: chartData,
});
}
并且json.dump或jsonfy不会序列化np.datetime64对象。
我无法做到
x = [json.dump(d) for d in dataframe["Date"].values]
因为它引发了无法序列化的异常
TypeError:'datetime64'类型的对象不是JSON可序列化的
我认为这些对象没有“isoformat()”方法,所以唯一的方法就是让它们成为字符串?