更新
浏览器控制台显示queue
未定义。
我是一个对d3和数据感兴趣的初学者。我修改了由Adil Moujahid发现here的样板项目。我在使用localhost渲染图表时遇到问题。 charts.js文件如下。我相信queue()方法没有触发。
queue()
.defer(d3.json, "/nba/utah")
.await(makeGraphs);
function makeGraphs(error, projectsJson, statesJson) {
var utahProjects = projectsJson;
var dateFormat = d3.time.format("%Y-%m-%d");
utahProjects.forEach(function(d) {
d["Game Date"] = dateFormat.parse(d["Game Date"]);
});
var ndx = crossfilter(utahProjects);
var gameDateDim = ndx.dimension(function(d) { return d["Game Date"]; });
var teamPtsDim = ndx.dimension(function(d) { return d["Team Pts"]; });
var teamRebDim = ndx.dimension(function(d) { return d["Team Reb"]; });
var teamAstDim = ndx.dimension(function(d) { return d["Team Ast"]; });
var teamFgmDim = ndx.dimension(function(d) { return d["FGM"]; });
var teamFgaDim = ndx.dimension(function(d) { return d["FGA"]; });
var teamMatchupDim = ndx.dimension(function(d) { return d["Matchup"]; });
var all = ndx.groupAll();
var gamesByDate = gameDateDim.group();
var gamesByPts = teamPtsDim.group();
var minDate = gameDateDim.bottom(1)[0]['Game Date'];
var maxDate = gameDateDim.top(1)[0]['Game Date'];
var minPts = teamPtsDim.bottom(1)[0]['Team Pts'];
var maxPts = teamPtsDim.top(1)[0]['Team Pts'];
var timeChart = dc.barChart("#time-chart");
var ptsChart = dc.barChart("#total-pts");
timeChart
.width(600)
.height(160)
.margins({top: 10, right: 50, bottom: 30, left: 50})
.dimension(gameDateDim)
.group(gamesByDate)
.transitionDuration(500)
.x(d3.time.scale().domain([minDate, maxDate]))
.elasticY(true)
.xAxisLabel("Year")
.yAxis().ticks(4);
ptsChart
.width(600)
.height(160)
.margins({top: 10, right: 50, bottom: 30, left: 50})
.dimension(dateDim)
.group(gamesByPts)
.transitionDuration(500)
.x(d3.time.scale().domain([minPts, maxPts]))
.elasticY(true)
.xAxisLabel("Year")
.yAxis().ticks(4);
dc.renderAll();
}
这是我用来构建服务器的app.py框架:
from flask import Flask
from flask import render_template
from pymongo import MongoClient
import json
from bson import json_util
from bson.json_util import dumps
app = Flask(__name__)
MONGODB_HOST = 'mongodb://user:password@aws-server.com'
MONGODB_PORT = 27017
DBS_NAME = 'nba'
COLLECTION_NAME = 'Utah Jazz2017-18'
FIELDS = {'Team Pts': True, 'Team Reb': True, 'Team Ast': True, 'FGM': True, 'FGA': True, 'Matchup': True, 'Game Date': True, '_id': False}
@app.route("/")
def index():
return render_template("index.html")
@app.route("/nba/utah")
def nba_projects():
connection = MongoClient(MONGODB_HOST, MONGODB_PORT)
collection = connection[DBS_NAME][COLLECTION_NAME]
projects = collection.find(projection=FIELDS)
json_projects = []
for project in projects:
json_projects.append(project)
json_projects = json.dumps(json_projects, default=json_util.default)
connection.close()
return json_projects
if __name__ == "__main__":
app.run(host='0.0.0.0',port=5000,debug=True)
请让我知道我哪里误入歧途。